所謂設備坐標與邏輯坐標只是相對的概念。
比如點pt(1000,1000),如果你認為他是
設備坐標,那么經過下變換,他就變成邏輯
坐標:
dc.DPtoLP(&pt);
如果你認為他是
邏輯坐標,那么經過下變換,他就變成設備坐標:
dc.DPtoLP(&pt);
是設備坐標還是邏輯坐標,與DC的影射模式(MapMode)
無關,任何影射模式都有設備坐標與邏輯坐標。其中,設備坐標
是統一的的,即都是指設備象素坐標。
1.首先、設備坐標指的是物理設備以象素點為單位。
邏輯坐標除MM_TEXT外均指物理尺寸,如mm,inch等
2.數字本身沒有邏輯與設備之分
CRect r=CRect(0,0,50,30);
CSize size(100,80);
CPoint point(50,60);
孤立的看待這些點或坐標是沒有意義的,他是邏輯還是設備坐標
取決于編程著的主觀愿望,和上下文的意義。
3.DPtoLP指將象素點數坐標轉換為在相應設備上該數目的象素點
在該設備上實際物理長度(尺寸)坐標。
LPtoDP指將相應設備實際物理長度(尺寸)坐標轉換為在相應設備
上該物理長度(尺寸)所占用的象素點書目坐標
一般dc所接受的參數是邏輯坐標,窗口函數都是接受設備坐標。
在使用自己產生的dc之前要先調用OnPrepareDC,確保dc的原點與邏輯坐標原點重合,因為dc的函數都是使用的邏輯坐標