GDI初學者的總結

來源:互聯網
上載者:User

許多Windows編程書籍都談到了關於這方面的內容,然而有些地方屬於誤導,有些則重點沒有突出,使讀者自己產生誤解.我也在這上面吃過苦頭.下面是我的個人簡單總結:

1.視窗和視口

  視窗:虛擬存在的一個螢幕,之所以引入這個概念,是Windows在繪圖時,首先根據映射模式座標系將圖形繪製到虛擬視窗中,然後將視窗中的內容映射到視口中.

  視口:在螢幕上看到的視圖用戶端區域.

2.裝置座標系和邏輯座標系

  裝置座標系:與視口對應,單位像素,x軸向右,y軸向下.(0,0)點始終顯示在平面的左上方.

  邏輯座標系:與視窗對應.根據映射模式的不同,單位和座標軸的方向都相應的不同.

  預設的映射模式是(MM_TEXT),此時邏輯座標系單位像素,同裝置座標系各方面都一致.

3.視窗原點和視口原點.

  原點的座標不一定是(0,0),這是最容易令人費解和誤解的地方.一定不要以為原點座標一定是(0,0).視窗原點和

  視口原點兩者映射對應.

  預設情況下,兩者的原點都在左上方.

4.SetViewportOrg()和SetWindowOrg()函數

  這兩個函數盡量不要一起用,除非你思維敏銳,否則會很混亂,我個人認為使用一個函數就能達到目的,我傾向於只使用SetViewportOrg().

  SetViewportOrg(x,y),參數是裝置座標,將視口原點移至裝置座標系的(x,y).即將邏輯點(0,0)映射成裝置點(x,y).

  SetWindowOrg(x,y)參數是邏輯座標,作用與上相反.

5.什麼時候使用邏輯座標和裝置座標

  所有繪圖函數都使用邏輯座標.

  通過滑鼠獲得的座標,GetClientRect()等函數是裝置座標.

我也是初學,不對之處,請多指教~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.