2011-09-20 25 views
1

這是我書中示例的片段。我在這段代碼中無法理解的是,SetWindowOrgEx x值正向左側增加,這是爲什麼?這在理論上應該像MM_TEXT那樣,x值增加到右側。我也注意到,通過SetViewportOrgEx,x值確實增加到了右側。爲什麼x值增加到SetViewportOrgEx右側,但SetWindowOrgEx的x值增加到左側?另外,改變兩個範圍的重點是什麼?你不能只編輯一個範圍嗎?關於我的教科書中的GDI映射示例

SetMapMode(hdc, MM_ISOTROPIC); 
SetWindowExtEx(hdc, 276, 72, NULL); 
SetViewportExtEx(hdc, cxClient, cyClient, NULL); 

SetWindowOrgEx(hdc, 138, 36, NULL); 
SetViewportOrgEx(hdc, cxClient/2, cyClient/2, NULL); 

回答

1

這取決於你在做什麼,但這些功能用於軸移位,所以邏輯點(0,0)是指比左上角以外的東西。

您通常應該只使用一個功能,SetWindowOrgExSetViewportOrgEx,具體取決於您的需求;不是都。

+0

我知道什麼是setOrg函數的基礎,但我不明白爲什麼在我的示例中,setOrg函數中x值在相反方向上增加。當我做SetWindowOrgEx(hdc,138 + 100,36,NULL); +100會使它向左移動100個單位,但是如果我把+100放在SetViewportOrgEx中,而不是像這樣:SetViewportOrgEx(hdc,(cxClient/2)+ 100,cyClient/2,NULL);它會使它向右移動100個單位。我不明白爲什麼setOrg函數與彼此不一致。 – eNergizer