創建視窗解析度為1280x720,
創建ID2D1RenderTarget時的范圍也用的GetClientRect(),
繪制的內容坐標范圍也在1279和719以內,
可實際繪制出的內容總有一小部分(右邊和下邊)超出視窗范圍,怎么破?
P.S. 查詢過似乎可能是dpi問題,但不知道怎么解決
uj5u.com熱心網友回復:
"創建視窗解析度為1280x720"如果是整個視窗的大小是1280*720,那就有可能,因為整個表單的大小,還包括了標題欄,邊框,剩下的才是客戶區
其實你需要的視窗,應該是客戶區大小為1280*720,加上標題欄和邊框,肯定是要大于這個面積的
所以你在創建視窗的時候,應該制定客戶區的大小,而不是整個視窗的大小
你可以試一下,把你的視窗設定為無標題欄,無邊框,讓其大小為1280*720,如果繪制沒有問題,那就是你設定的表單大小不對
這是我以前做D3D9的時候,生成視窗的代碼,你可以參考一下,其中
m_iWndClientRectWidth=800;
m_iWndClientRectHeight=600;
m_hWnd = CreateWindow( L"D3D9 Window", m_strWindowTitle,
WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX,
100, 100,
//將表單的客戶區設定成800*600,因此要考慮表單邊框寬度和標題欄高度
//這兩個值可以通過函式: GetSystemMetrics 和 相應的引數得到
//我真是天才啊~~~~~~~~~~~~~~~
m_iWndClientRectWidth+GetSystemMetrics( SM_CXDLGFRAME)*2,
m_iWndClientRectHeight+GetSystemMetrics( SM_CXDLGFRAME)*2+GetSystemMetrics(SM_CYCAPTION),
GetDesktopWindow(), NULL,hInstance, NULL );
這段代碼就生成了一個“客戶區”是800*600的視窗
uj5u.com熱心網友回復:
哇,非常感謝x原來還要加標題欄和邊框的大小呀,我是第一次創建視窗程式qwquj5u.com熱心網友回復:
直接設定ClientWidth = 1280;
ClientHeight = 720;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/30866.html
