列印中,裝置座標與邏輯座標轉換_裝置座標

來源:互聯網
上載者:User

1、在螢幕的CDC中繪圖時的座標轉換

系統邏輯座標——————螢幕座標————————pDC邏輯座標

      我們調用GetWindowRect獲得的是視窗的螢幕座標Size。由於pDC預設的MapMode是MM_TEXT,所以我們可以直接使用Size作為邏輯大小填充視窗。

     當然我們可以改變pDc的MapMode,這樣我們邏輯座標是Size,但是螢幕上出現的就不是Size了


2、在印表機中列印時的座標轉換


       印表機座標————————印表機的pDc邏輯座標


       螢幕座標—————————螢幕的pDc邏輯座標

                          

     

       紙張的尺寸已知,根據螢幕的DPI,紙張在螢幕上的螢幕座標應該可以求得,所以在列印函數中,架構提供的列印資訊中含有紙張的螢幕座標Size。

      如果我們直接使用印表機的預設pDC(MapMode是MM_TEXT)進行列印,會出現以下情況

     紙張長度————>螢幕座標Size——————>    印表機座標Size

    螢幕座標Size是根據紙張長度和螢幕DPI確定的,在螢幕上Size個座標的長度應該是紙張的長度,

    但是在印表機中,Size個座標的長度可能不是紙張的長度,因為螢幕和印表機的DPI不同。


所以要想列印正確,找到螢幕上SIze對應印表機中的多少個單位,我們可以設定印表機pDC的MapMode

      



根據螢幕的pDC->GetDeviceCaps(),獲得螢幕上一英寸對應的螢幕座標長度x1;

根據印表機的pDC->GetDeviceCaps(),獲得印表機上一英寸對應的印表機座標長度x2;


    印表機pDC->SetMapMode(MM_ANISOTROPIC);

pDC->SetWindowExt(x1,y1);//邏輯視窗中座標大小
pDC->SetViewportExt(x2,y2);//列印視窗中座標大小


   

        




    


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.