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

2021-07-10 09:50:15 字數 883 閱讀 2455

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);//列印視窗中座標大小

MFC中邏輯座標與裝置座標的轉換關係

在windows中,邏輯座標又稱為視窗座標,裝置座標又稱為視口座標,它們之間的轉換關係如下 其中 xwindow,ywindow 為視窗座標,xwinorg,ywinorg 為視窗原點座標,xwinext,ywinext 為視窗範圍,xviewport,yviewport 為視口座標,xviewor...

邏輯座標和裝置座標的區別

在 windows 中,文件座標系稱作邏輯座標系,檢視座標系稱為裝置座標系。它們之間的關係如下圖所示 圖7 11 文件座標和檢視座標 在檢視滾動後,如果使用者在檢視中單擊滑鼠,那麼會得到滑鼠位置的裝置 檢視 座標。在使用這個資料處理文件 比如畫點或畫線 時,需要把它轉化為文件座標。這是因為利用 mf...

邏輯座標(視窗) 裝置座標(視口)

視窗 依賴於邏輯座標,可以是畫素點 公釐或程式設計師想要的其他尺度。視口 依賴於裝置座標 畫素點 1.windows都用下面兩個公式將視窗座標轉換成視口座標 xviewport xwindow xwinorg xviewext xwinext xvieworg yviewport ywindow y...