介紹
如果想要在使用任意的軸時都保證兩個軸上的邏輯單位相同,則MM_ISOTROPIC映射方式就是理想的映射方式。這時,具有相同邏輯寬度和高度的矩形顯示為正方形,具有相同邏輯寬度和高度的橢圓顯示為圓。當您剛開始將映射方式設定為MM_ISOTROPIC時,Windows使用與MM_LOMETRIC同樣的視窗和視埠範圍(但是,不要對此有所依賴)。區別在於,您現在可以呼叫SetWindowExtEx和SetViewportExtEx來根據自己的偏好改變範圍了,然後,Windows將調整範圍的值,以便兩條軸上的邏輯單位有相同的實際距離。
說明
一般說來,您可以用所期望的邏輯視窗的邏輯尺寸作為SetWindowExtEx的參數,用顯示區域的實際寬和高作為SetViewportExtEx的參數。Windows在調整這些範圍時,必須讓邏輯視窗適應實際視窗,這就有可能導致顯示區域的一段落到了邏輯視窗的外面。必須在呼叫SetViewportExtEx之前呼叫SetWindowExtEx,以便最有效地使用顯示區域中的空間。例如,假設您想要一個「傳統的」單象限虛擬座標系,其中(0,0)在顯示區域的左下角,寬度和高度的範圍都是從0到32,767,並且希望x和y軸的單位具有同樣的實際尺寸。以下就是所需的程式:
SetMapMode (hdc, MM_ISOTROPIC) ;
SetWindowExtEx (hdc, 32767, 32767, NULL) ;
SetViewportExtEx (hdc, cxClient, -cyClient, NULL) ;
SetViewportOrgEx (hdc, 0, cyClient, NULL) ;
如果其後用GetWindowExtEx和GetViewportExtEx函式獲得了視窗和視埠的範圍,可以發現,它們並不是先前指定的值。Windows將根據顯示設備的縱橫比來調整範圍,以便兩條軸上的邏輯單位表示相同的實際尺寸。