久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

關(guān)于SetWindowOrg和SetViewportOrg函數(shù)的說(shuō)明,!

 春夜喜雨LBR 2017-08-10

微笑吐舌頭關(guān)于這兩個(gè)函數(shù)的解釋,我就不詳細(xì)敘述了,,我的前兩篇博客關(guān)于這兩個(gè)函數(shù)的內(nèi)容已經(jīng)講的比較清楚了,,有需要的同學(xué)可以找一找!我只是記錄一下我自己使用的心得,!

微笑吐舌頭先確定幾點(diǎn):

微笑吐舌頭1.默認(rèn)的時(shí)候,,視口坐標(biāo)原點(diǎn)在屏幕顯示部分的左上角。

微笑吐舌頭先來(lái)熱一下身:

  1. void CmfcAppView::OnDraw(CDC* pDC)  
  2. {  
  3.     CmfcAppDoc* pDoc = GetDocument();  
  4.     ASSERT_VALID(pDoc);  
  5.     if (!pDoc)  
  6.         return;  
  7.   
  8.     CRect rect;   
  9.     GetClientRect(&rect);  
  10.     CBrush brush(RGB(255, 0, 0));   /*紅色的畫(huà)刷*/  
  11.     CPen pen(PS_SOLID, 3, RGB(0, 0, 255));  /*藍(lán)色的筆*/  
  12.     pDC->SelectObject(&brush);  
  13.     pDC->SelectObject(&pen);  
  14.   
  15.     /* 
  16.     *     通常這個(gè)SetViewportOrg函數(shù)調(diào)用多次實(shí)際上就只有最后的一次起效果,!如同下面的語(yǔ)句,。 
  17.     *     pDC->SetWindowOrg(100, 100),這句有或者沒(méi)有都不影響結(jié)果! 
  18.     *     我是這樣理解的,程序里記錄著一張邏輯坐標(biāo)表.第一次時(shí),邏輯坐標(biāo)系原點(diǎn)被移至(100, 100)這個(gè)點(diǎn),! 
  19.     *當(dāng)然,,這個(gè)點(diǎn)是相對(duì)于程序記錄的那個(gè)邏輯坐標(biāo)系為準(zhǔn)的。第二次時(shí),,邏輯坐標(biāo)系被移至原點(diǎn)(-100, -100) 
  20.     *這個(gè)點(diǎn),,這個(gè)點(diǎn)也是相對(duì)于程序記錄的那個(gè)邏輯坐標(biāo)系而言的,。我們看到,第一次等于沒(méi)做。 
  21.     *     (每次調(diào)用SetWindowOrg都以這張邏輯坐標(biāo)為準(zhǔn)!) 
  22.     */  
  23.     pDC->SetWindowOrg(100, 100);  
  24.     pDC->SetWindowOrg(-100, -100);  
  25.     pDC->Rectangle(0, 0, 150, 150);  
  26. }  
微笑吐舌頭結(jié)果是:


微笑吐舌頭再來(lái)看一看這段: 

  1. void CmfcAppView::OnDraw(CDC* pDC)  
  2. {  
  3.     CmfcAppDoc* pDoc = GetDocument();  
  4.     ASSERT_VALID(pDoc);  
  5.     if (!pDoc)  
  6.         return;  
  7.   
  8.     CRect rect;   
  9.     GetClientRect(&rect);  
  10.   
  11.     CBrush brush(RGB(255, 0, 0));   /*紅色的畫(huà)刷*/  
  12.     CPen pen(PS_SOLID, 3, RGB(0, 0, 255));  /*藍(lán)色的筆*/  
  13.     pDC->SelectObject(&brush);  
  14.     pDC->SelectObject(&pen);  
  15.   
  16.     pDC->Rectangle(0, 0, 150, 150);  /*先畫(huà)一個(gè)矩形*/  
  17.   
  18.     pDC->SetWindowOrg(-100, -100);   /*將邏輯坐標(biāo)系原點(diǎn)移至(-100, -100),相對(duì)于原來(lái)的那個(gè)邏輯坐標(biāo)系而言*/  
  19.     pDC->Rectangle(0, 0, 150, 150);  /*再畫(huà)一個(gè)矩形*/  
  20.   
  21.     /* 
  22.     *   看了結(jié)果,,有人很疑惑,,怎么上面那個(gè)矩形沒(méi)有隨著邏輯坐標(biāo)一起移動(dòng)? 
  23.     *   整個(gè)程序的客戶區(qū)你可以看做是一塊畫(huà)布啦,!怎么會(huì)有已經(jīng)畫(huà)好的東西,,還可以移動(dòng)的道理,你說(shuō)算是吧,? 
  24.     * 
  25.     */  
  26. }  
 微笑吐舌頭結(jié)果是:


微笑吐舌頭好吧,!接下來(lái)搞點(diǎn)有技術(shù)含量的:

  1. void CmfcAppView::OnDraw(CDC* pDC)  
  2. {  
  3.     CmfcAppDoc* pDoc = GetDocument();  
  4.     ASSERT_VALID(pDoc);  
  5.     if (!pDoc)  
  6.         return;  
  7.   
  8.     CRect rect;   
  9.     GetClientRect(&rect);  
  10.   
  11.     CBrush brush(RGB(255, 0, 0));   /*紅色的畫(huà)刷*/  
  12.     CPen pen(PS_SOLID, 3, RGB(0, 0, 255));  /*藍(lán)色的筆*/  
  13.     pDC->SelectObject(&brush);  
  14.     pDC->SelectObject(&pen);  
  15.   
  16.     pDC->SetWindowOrg(100, 100);   /*將邏輯坐標(biāo)系原點(diǎn)移至(-100, -100),相對(duì)于原來(lái)的那個(gè)邏輯坐標(biāo)系而言*/  
  17.     pDC->Rectangle(0, 0, 150, 150);  /*再畫(huà)一個(gè)矩形*/  
  18.   
  19. }  
可憐可憐結(jié)果是:

可憐可憐有人奇怪上面的結(jié)果了,為什么矩形只剩下大約1/4的位置了,? 


可憐可憐看一下這段程序:

  1. void CmfcAppView::OnDraw(CDC* pDC)  
  2. {  
  3.     CmfcAppDoc* pDoc = GetDocument();  
  4.     ASSERT_VALID(pDoc);  
  5.     if (!pDoc)  
  6.         return;  
  7.   
  8.     CRect rect;   
  9.     GetClientRect(&rect);  
  10.   
  11.     CBrush brush(RGB(255, 0, 0));   /*紅色的畫(huà)刷*/  
  12.     CPen pen(PS_SOLID, 3, RGB(0, 0, 255));  /*藍(lán)色的筆*/  
  13.     pDC->SelectObject(&brush);  
  14.     pDC->SelectObject(&pen);  
  15.   
  16.     pDC->SetViewportOrg(100, 100);   /*將視口坐標(biāo)系原點(diǎn)移至(-100, -100),相對(duì)于原來(lái)的那個(gè)視口坐標(biāo)系而言*/  
  17.     pDC->Rectangle(0, 0, 150, 150);  /*畫(huà)一個(gè)矩形*/  
  18.   
  19. }  
可憐可憐想一想結(jié)果,,然后和真實(shí)的結(jié)果比對(duì)一下:


可憐可憐我的解釋如下:


可憐可憐在看一下這段代碼,然后猜一下結(jié)果,?

  1. void CmfcAppView::OnDraw(CDC* pDC)  
  2. {  
  3.     CmfcAppDoc* pDoc = GetDocument();  
  4.     ASSERT_VALID(pDoc);  
  5.     if (!pDoc)  
  6.         return;  
  7.   
  8.     CRect rect;   
  9.     GetClientRect(&rect);  
  10.   
  11.     CBrush brush(RGB(255, 0, 0));   /*紅色的畫(huà)刷*/  
  12.     CPen pen(PS_SOLID, 3, RGB(0, 0, 255));  /*藍(lán)色的筆*/  
  13.     pDC->SelectObject(&brush);  
  14.     pDC->SelectObject(&pen);  
  15.   
  16.     pDC->SetViewportOrg(100, 100);   /*將視口坐標(biāo)系原點(diǎn)移至(100, 100),相對(duì)于原來(lái)的那個(gè)視口坐標(biāo)系而言*/  
  17.     pDC->SetWindowOrg(-100, -100); /*將邏輯(窗口)坐標(biāo)系原點(diǎn)移至(100, 100),相對(duì)于原來(lái)的那個(gè)邏輯坐標(biāo)系而言*/  
  18.     pDC->Rectangle(0, 0, 150, 150);  /*畫(huà)一個(gè)矩形*/  
  19.   
  20. }  
可憐可憐讓我們來(lái)核對(duì)一下:


可憐可憐是不是感到有些奇怪,?看一下我的解釋!

 

鄙視鄙視對(duì)于上面的第3步,,有人感到很奇怪,,為什么畫(huà)矩形的時(shí)候是以變換前的邏輯坐標(biāo)為準(zhǔn)的?而不是以變換后的邏輯坐標(biāo)為準(zhǔn)的,?

鄙視鄙視看一下結(jié)果的精確測(cè)量:



鄙視鄙視看見(jiàn)沒(méi)有,,測(cè)量的結(jié)果說(shuō)明,我上面的原理圖是正確的,!

鄙視鄙視關(guān)于解釋,我的解釋是:SetWindowOrg函數(shù)并未實(shí)際上改變邏輯坐標(biāo),,只是通知程序應(yīng)該怎樣映射,該把邏輯坐標(biāo)的這個(gè)點(diǎn)映射到視口坐標(biāo)的哪個(gè)點(diǎn),!應(yīng)該比較清楚了吧,?

鄙視鄙視最好,這兩個(gè)函數(shù)別同時(shí)用,,因?yàn)閮蓚€(gè)混在一起,,很容易糊涂!

鄙視鄙視既然都講了這么多了,,順帶提一下SetViewportExt和SetWindowExt兩個(gè)函數(shù)吧,!這兩個(gè)函數(shù)只在映射模式為MM_ISOTROPIC和MM_ANISOTROPIC下有效!兩個(gè)函數(shù)里面參數(shù)的值并不重要,,重要的只是他們的比值罷了,!

鄙視鄙視看這段代碼:

  1. pDC->SetMapMode(MM_ANISOTROPIC);  
  2. pDC->SetWindowExt(1024,768);  
  3. pDC->SetViewportExt(10240,7680); //表示一個(gè)窗口單位,也就是在x軸上邏輯單位對(duì)應(yīng)10個(gè)視口單位,當(dāng)然屏幕上表示像素,,在y軸上亦然  
  4. pDC->Rectangle(0,0,100,100);  
再見(jiàn)再見(jiàn)和下面這段代碼:

  1. pDC->SetMapMode(MM_ANISOTROPIC);  
  2. pDC->SetWindowExt(10240,7680);  
  3. pDC->SetViewportExt(102400,76800);     //表示一個(gè)窗口單位,,也就是在x軸上邏輯單位對(duì)應(yīng)10個(gè)視口單位,當(dāng)然屏幕上表示像素,,在y軸上亦然  
  4. pDC->Rectangle(0,0,100,100);  
再見(jiàn)再見(jiàn)兩者在效果上沒(méi)有區(qū)別,!

再見(jiàn)再見(jiàn)還有,兩者的正負(fù)會(huì)影響坐標(biāo)軸的方向,!當(dāng)然,,這不是這篇文章的重點(diǎn)!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多