欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
映射模式/視口(viewport)和窗口(window)

OnPaint() 

    根據窗口大小算出新的圖形坐標; 
    使用計算出的圖形坐標繪制圖形; 
}
這樣每次拖動(dòng)后,OnPaint()就會(huì )被調用,自然就成比例了。

*****************************************************************************************************************************************

'視' (View) 是 '窗口' (Window)的一種。像你現在看到的瀏覽器,整個(gè)IE就是'窗口'(Screen/Window),而顯示網(wǎng)頁(yè)的區域就是'視口'(Client/View)。視口是顯示文檔的區域,即客戶(hù)區!

窗口是依據邏輯坐標的,邏輯坐標可以是圖素、毫米、英寸或者您想要的任何其它單位。您在GDI繪圖函數中指定邏輯窗口坐標;視口是相對于設備坐標而言的。

MM_ISOTROPIC --> 長(cháng)寬比例保持一致,相當于設備長(cháng)寬比變了后,圖形也不會(huì )變形 
MM_ANISOTROPIC --> 長(cháng)寬比例根據設備坐標的長(cháng)寬自動(dòng)調整,可以不成比例

 pDC->SetMapMode(MM_ISOTROPIC);
 pDC->SetWindowExt(XRange/Rect.width, YRange/Rect.Height); // XRange指x方向需要畫(huà)的點(diǎn)數,Rect.width是畫(huà)布寬度
 pDC->SetViewportExt(1,1); //設置1,意思是指在一個(gè)像素點(diǎn)上能畫(huà)XRange/Rect.width個(gè)點(diǎn)

 pDC->SetViewportOrg((rc.right+rc.left)/2, (rc.bottom+rc.top)/2);  //將設備坐標點(diǎn)((rc.right+rc.left)/2, (rc.bottom+rc.top)/2)映射為邏輯坐標原點(diǎn)(0, 0) 
    
你定了窗口的大小,視口的大小,那么你在窗口上的畫(huà)圖操作映射的視口(也就是顯示設備上)的比例也就確定了  :視口大小/窗口大小,即 XRange/Rect.width 和 YRange/Rect.Height。這樣點(diǎn)的一個(gè)像素大小在顯示設備上將按這個(gè)比例縮放(即一個(gè)像素點(diǎn)能畫(huà)幾個(gè)點(diǎn))。從畫(huà)圖效果應該就能看出來(lái)。

 

注釋?zhuān)?br style="line-height: 25px; ">0、用設備上下文繪圖的函數,其坐標參數值都是值邏輯單位,在默認情況下,映射模式為MM_TEXT,也就是說(shuō)每個(gè)邏輯單位1對應1個(gè)像素(設備單位)。


1、窗口和視口(viewport)的概念 
  窗口用邏輯范圍表示大小 
  視口用設備范圍表示大小 
  這里所謂的窗口和視圖只是一種大小范圍的描述方式,主要是為了理解MapMode而劃分的概念


2、邏輯單位和設備單位的映射 
SetWindowExt()  設定窗口的邏輯范圍 
SetViewportExt() 設定視口的物理大小(參數值為設備單位,也就是像素大小) 

SetWindowExt 必須要和SetViewportExt結合使用,并且只用在MM_ISOTROPIC和MM_ANISOTROPIC 模式下。在MM_ISOTROPIC 模式下SetWindowExt 必須在SetViewportExt之前調用。

例如: 
pDC->SetMapMode(MM_ISOTROPIC); // 等比例模式 
pDC->SetWindowExt(1000, -1000); // 設置窗口設為1000*1000的矩形 
pDC->SetViewportExt(500, 500);  // 設置視圖設為500*500像素的矩形, 
// 由此可計算出每個(gè)像素對應2個(gè)邏輯單位: 
//  x坐標 1000/500  =  2, 向左為正向 
//  y坐標 -1000/500 = -2, 向下為負向 

同理如下代碼: 
pDC->SetMapMode(MM_ISOTROPIC); 
pDC->SetWindowExt(1000, 1000); 
pDC->SetViewportExt(500, -500); 
產(chǎn)生的效果是和上述代碼的效果是一樣的。

3、坐標原點(diǎn) 
默認情況下,邏輯坐標原點(diǎn)和設備坐標原點(diǎn)是一致的,都是(0, 0),即窗口左上角設備坐標原點(diǎn)總是在左上角。 

可用如下兩個(gè)函數改變(移動(dòng))邏輯坐標原點(diǎn): 
SetWindowOrg() // 將設備坐標原點(diǎn)(0, 0)映射為某個(gè)邏輯坐標點(diǎn) 
SetViewportOrg() // 將某個(gè)設備坐標點(diǎn)映射為邏輯坐標原點(diǎn)(0, 0) 
SetWindowOrg 和SetViewportOrg可起到相同的效果,一般只用其中一個(gè)。 

例如: 
pDC->SetMapMode(MM_ISOTROPIC); 
pDC->SetWindowExt(1000, 1000); 
pDC->SetViewportExt(500, 500);  // 由此可計算出每個(gè)設備坐標單位和邏輯單位的比例是1:2 

// 一下兩句的效果都是一樣的 
pDC->SetWindowOrg(-40, -40); // 將設備坐標原點(diǎn)(0, 0)設置映射邏輯坐標點(diǎn)(-40, -40) 
// pDC->SetViewportOrg(20, 20); // 將設備坐標點(diǎn)(20, 20)映射為邏輯坐標原點(diǎn)(0, 0) 
// 為什么是20 呢?因為每個(gè)設備坐標單位和邏輯單位的比例是 1:2 

pDC->Rectangle(0, 0, 500, 300);

 

//若需將某點(diǎn)(x,y)畫(huà)到所設置的新的原點(diǎn)(0,0)上,只需使用

pDC->SetPixel(x-x,y-y,RGB(123,25,0));

//如果想畫(huà)一個(gè)大點(diǎn)的實(shí)心點(diǎn),則可以首先定義一個(gè)CBrush對象,之后將它SelectObject到pDC中,最后使用ecllipse函數。例子具體如下:

 CBrush hBrush(RGB(123,25,0)); //定義畫(huà)刷
 CBrush *pOldBrush = pDC->SelectObject(&hBrush); //選到設備中去

 pDC->Ellipse(pt-10,pt-10,pt+10,pt+10); //畫(huà)一個(gè)半徑為10個(gè)設備單位的圓

 

//鼠標點(diǎn)擊處pt相對于矩形rt中新原點(diǎn)(中心點(diǎn))的位置(xpt,ypt):

 if(pt.x>rt.top && pt.y<rt.bottom && pt.x<rt.right && pt.y>rt.top)
 {
//  xpt = (pt.x-rt.left)*(XRange/rt.width)-(XRange/rt.width)*(rt.right-rt.left)/2);
//  ypt = - ((pt.y-rt.top)*(YRange/rt.Height)-((YRange/rt.Height)*(rt.bottom-rt.top)/2));

//  AfxMessageBox(" button in rect ");
  UpdateData(FALSE);
 }

4、通過(guò)SetMapMode 函數可改變映射模式。 

5、用戶(hù)坐標值和屏幕坐標值的互相轉化函數
CWnd::ClientToScreen 和 CWnd::ScreenToClient

6、坐標轉換函數
CDC::LPtoDP 和 CDC::DPtoLP

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
VC中坐標系的建立 zz
理解SetMapMode,SetWindowOrg,SetViewportOrg,SetWindowExt,SetViewportExt
VC++技術(shù)內幕(第四版)筆記
基于VC++的GDI常用坐標系統及應用 (4)
設備坐標、邏輯坐標、物理坐標的區別與轉換(更改原文一處錯誤)
坐標系統與坐標變換
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久