我怎樣才能改變窗口中的座標從0,0變爲0,0 bottomleft。從TopLeft 0,0到BottomLeft 0,0在GDI win32
我已經嘗試了各種解決方案與
SetMapMode(hdc,MM_TEXT);
,
SetViewportExtEx(hdc,0,-clientrect.bottom,NULL);
SetViewPortOrgEx(hdc,0,-clientrect.bottom,NULL);
SetWindowOrgEx(hdc,0,-clientrect.bottom,NULL);
SetWindowExtEx(hdc,0,-clientrect.bottom,NULL);
我甚至曾嘗試谷歌的解決方案,但沒有佔上風,所以我轉交給你更有經驗的人在網上。
這個想法是我創建了一個線性插值的自定義控件,我可以通過右上角的x,y來反轉座標系,但我希望它是正確的。此刻,當我嘗試繪製它時,我得到了一個反向線性插值,因爲我無法使座標左下角。
我使用的是win32 api,我懷疑我可以跳過代碼,因爲屏幕座標系在所有系統上幾乎是相同的,因此我的意思是0,0在屏幕上始終保持「始終」它標準的2D窗口和框架。
我真的不想讓整個代碼樣本緩解你們打字痛苦,但我想要一些方向,因爲我似乎無法理解在win32 API中翻轉coords的簡單概念。
感謝和聖誕快樂
編輯!
我想加我自己的回答這個問題,因爲我用簡單的數學顛倒視圖這麼說。
如果舉一個例子,我得到了valuepair x,y(150,57)和另一對x,y(100,75)然後我用這個公式height + (-1 * y)
和瞧,我得到了一個正確的笛卡爾座標字段:) ofcourse in這個例子的高度是未定義的變量,但在我的應用程序中它的高度爲200px。
我應該提到,我試圖severeal解決方案不是在同一只兩,但我確實都嘗試過。通過使用你的解決方案,我仍然有一個問題,我需要否定所有值向上,因此我使用了-clientrect.bottom,正如我從MSDN瞭解的。 – 2011-12-22 10:47:44
@ OMG-1:查看我的附加信息。 – 2011-12-22 15:30:55
謝謝Jim Mischel,我會繼續我沉悶而愚蠢的想法,因爲它應該是有效的。我不會使用GDI +,因爲我很固執,並會在腳下開槍,說實話:)祝你聖誕快樂。 – 2011-12-22 23:24:02