對應模式和翻譯
下表說明對應模式。
對應模式 | 描述 |
---|---|
MM_ANISOTROPIC | 頁面空間中的每個單位都會對應至裝置空間中應用程式指定的單位。 例如,在指定的裝置) 上描述時,在世界空間中繪製的圓形可能會顯示為省略號,或可能不相等地縮放 (。 座標軸的方向也會由應用程式指定。 |
MM_HIENGLISH | 頁面空間中的每個單位都會對應到裝置空間中的 0.001 英吋。 x 的值會從左至右增加。 y 的值會從下到上增加。 |
MM_HIMETRIC | 頁面空間中的每個單位都會對應到裝置空間中的 0.01 公釐。 x 的值會從左至右增加。 y 的值會從下到上增加。 |
MM_ISOTROPIC | 頁面空間中的每個單位都會對應至裝置空間中應用程式定義的單位。 座標軸一律會平均縮放。 軸的方向可由應用程式指定。 |
MM_LOENGLISH | 頁面空間中的每個單位都會對應到裝置空間中的 0.01 英吋。 x 的值會從左至右增加。 y 的值會從下到上增加。 |
MM_LOMETRIC | 頁面空間中的每個單位都會對應到裝置空間中的 0.1 公釐。 x 的值會從左至右增加。 y 的值會從下到上增加。 |
MM_TEXT | 頁面空間中的每個單位都會對應至一個圖元;也就是說,完全不會執行任何調整。 當沒有任何轉譯生效 (這是預設) 時,MM_TEXT對應模式中的頁面空間相當於實體裝置空間。 x 的值會從左至右增加。 y 的值會從上到下增加。 |
MM_TWIPS | 頁面空間中的每個單位都會對應到印表機 (1/1440 英吋) 的第二個點。 x 的值會從左至右增加。 y 的值會從下到上增加。 |
若要設定對應模式,請呼叫 SetMapMode 函式 。 藉由呼叫 GetMapMode 函式來擷取 DC 的目前對應模式。
頁面空間到裝置空間轉換是由視窗和檢視區所指定點所計算的值所組成。 在此內容中,視窗是指頁面空間的邏輯座標系統,而檢視區則參考裝置空間的裝置座標系統。 視窗和檢視區各包含原點、水準 (「x」) 範圍,以及垂直 (「y」) 範圍) 。 視窗參數位於邏輯座標中;裝置座標中的檢視區 (圖元) 。 系統會結合視窗和檢視區中的原點和範圍,以建立轉換。 這表示視窗和檢視區會分別指定用來將頁面空間中點對應至裝置空間之轉換所需的一半因素。 因此,系統會將視窗原點對應至檢視區原點,並將視窗範圍對應至檢視區範圍,如下圖所示。
視窗和檢視區範圍會建立頁面空間與裝置空間轉換中使用的比例或縮放比例。 針對六種預先定義的對應模式, (MM_HIENGLISH、MM_LOENGLISH、MM_HIMETRIC、MM_LOMETRIC、MM_TEXT和MM_TWIPS) ,呼叫 SetMapMode 時,系統會設定範圍。 它們無法變更。 其他兩個對應模式 (MM_ISOTROPIC和MM_ANISOTROPIC) 需要指定範圍。 這是藉由呼叫 SetMapMode 來設定適當的模式,然後呼叫 SetWindowExtEx 和 SetViewportExtEx 函式以指定範圍來完成。 在MM_ISOTROPIC對應模式中,呼叫SetViewportExtEx之前,請務必先呼叫SetWindowExtEx。
視窗和檢視區原點會建立頁面空間轉換成裝置空間轉換中使用的轉譯。 使用 SetWindowOrgEx 和 SetViewportOrgEx 函式來設定視窗和檢視區來源。 原點與範圍無關,而且不論目前的對應模式為何,應用程式都可以設定它們。 變更對應模式不會影響目前設定的原點 (,雖然可能會影響範圍) 。 原點會以目前對應模式不會影響的絕對單位指定。 若要改變原點,請使用 OffsetWindowOrgEx 和 OffsetViewportOrgEx 函式。
下列公式顯示將點從頁面空間轉換為裝置空間所涉及的數學運算。
Dx = ((Lx - WOx) * VEx / WEx) + VOx
涉及下列變數。
Dx x value in device units
Lx x value in logical units (also known as page space units)
WOx window x origin
VOx viewport x origin
WEx window x-extent
VEx viewport x-extent
以 y 取代 x 的相同方程式會轉換 y 點的 y 元件。
公式會先從其座標原點位移。 這個值不再受到原點偏差,然後依範圍的比例調整為目的地座標系統。 最後,縮放值會依目的地原點位移至其最終對應。
LPtoDP和DPtoLP函式可用來分別從邏輯點轉換為裝置點,以及從裝置點轉換為邏輯點。