国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
基于VC++的GDI常用坐標(biāo)系統(tǒng)及應(yīng)用 (3)
 三、固定映射模式 
  為了控制設(shè)備上下文中的坐標(biāo)軸的方向,可以使用CDC類的SetMapMode()函數(shù),它的語法如下:
 
int SetMapMode(int nMapMode);
 
  這個(gè)函數(shù)將根據(jù)參數(shù)的設(shè)置的不同做兩件事,一是控制坐標(biāo)軸的方向;二是坐標(biāo)系統(tǒng)的單位長度。
 
  這個(gè)函數(shù)的參數(shù)是用來定義映射模式的整型常量。它可能的值是:MM_TEXT, MM_LOENGLISH、MM_HIENGLISH、MM_ANISOTROPIC、MM_HIMETRIC, MM_ISOTROPIC、 MM_LOMETRIC, MM_TWIPS。
 
  默認(rèn)情況下使用MM_TEXT映射模式。換句話說,如果你沒有具體的規(guī)定某一映射模式,你的應(yīng)用程序就將使用MM_TEXT映射模式。在這種映射模式下,設(shè)備上下文中的度量尺寸將使用默認(rèn)的像素單位,水平坐標(biāo)軸正方向向右,垂直坐標(biāo)軸正方向向下。例如,上面的OnPaint事件可以用下面的代碼重寫,它將產(chǎn)生同樣的效果,仿佛沒有使用映射模式。
 
void CExoDraw1View::OnPaint() 
{
 CPaintDC dc(this); // device context for painting
 dc.SetMapMode(MM_TEXT);
 dc.SetViewportOrg(380, 220);
 // Use a red pen
 CPen PenRed(PS_SOLID, 1, RGB(255, 0, 0));
 dc.SelectObject(PenRed);
 // A circle whose center is at the origin (0, 0)
 dc.Ellipse(-100, -100, 100, 100);
 // Use a blue pen
 CPen PenBlue(PS_SOLID, 1, RGB(0, 0, 255));
 dc.SelectObject(PenBlue);
 // Horizontal axis
 dc.MoveTo(-380, 0);
 dc.LineTo(380, 0);
 // Vertical axis
 dc.MoveTo(0, -220);
 dc.LineTo(0, 220);
 // An orange pen
 CPen PenOrange(PS_SOLID, 1, RGB(255, 128, 0));
 dc.SelectObject(PenOrange);
 // A diagonal line at 45 degrees
 dc.MoveTo(0, 0);
 dc.LineTo(120, 120);
}


圖十、代碼效果圖

  MM_LOENGLISH模式,與其他一些映射模式(不包括MM_TEXT模式)一樣,執(zhí)行兩個(gè)動(dòng)作,它改變坐標(biāo)軸的方向,垂直坐標(biāo)軸的正方向向上;


圖十一、MM_LOENGLISH
映射模式下的坐標(biāo)系
  
  此外,度量單位改為0.01英寸,這意味著你提供的坐標(biāo)將除以100,觀察上述代碼的MM_LOENGLISH映射效果
 
void CExoDraw1View::OnPaint() 
{
 CPaintDC dc(this); // device context for painting
 dc.SetMapMode(MM_LOENGLISH);
 dc.SetViewportOrg(380, 220);
 . . .
}


圖十二、代碼效果圖
  
  正如你所看到的,直線現(xiàn)在位于坐標(biāo)系的第一象限,同時(shí),直線比以前縮短,圓也比以前的要小。
 
  與MM_LOENGLISH映射模式相似,MM_HIENGLISH映射模式也是垂直坐標(biāo)軸正向向上,只是它以0.001英寸為坐標(biāo)單位,下面是它的效果:
 
void CExoDraw1View::OnPaint() 
{
 CPaintDC dc(this); // device context for painting
 dc.SetMapMode(MM_HIENGLISH);
 dc.SetViewportOrg(380, 220);
 . . . Same as previous
}


圖十三、代碼效果圖
  
  MM_LOMETRIC映射模式使用與上兩種映射模式相同的坐標(biāo)軸,不同的是MM_LOMETRIC使用0.1毫米為單位,下面是一個(gè)例子:
 
void CExoDraw1View::OnPaint() 
{
 CPaintDC dc(this); // device context for painting 
 dc.SetMapMode(MM_LOMETRIC);
 dc.SetViewportOrg(380, 220);
 . . .
}


圖十四、代碼效果圖
 

  MM_HIMETRIC使用與上述三種映射模式相同的坐標(biāo)系,但它的坐標(biāo)單位是0.01毫米,下面例子代碼如下:
 
void CExoDraw1View::OnPaint() 
{
 CPaintDC dc(this); // device context for painting
 dc.SetMapMode(MM_HIMETRIC);
 dc.SetViewportOrg(380, 220);
 . . . Same as previous
}


圖十五、代碼效果圖
 
 
  MM_TWIPS映射模式將每個(gè)邏輯單位(像素)除以20,實(shí)際上一twip等于1/1440 英寸,坐標(biāo)系統(tǒng)仍然與上面幾種映射方式相同。
 
void CExoDraw1View::OnPaint() 
{
 CPaintDC dc(this); // device context for painting
 CRect Recto;
 dc.SetMapMode(MM_TWIPS);
 dc.SetViewportOrg(380, 220);
 . . .
}


圖十六、代碼效果圖
 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于VC++的GDI常用坐標(biāo)系統(tǒng)及應(yīng)用
坐標(biāo)系統(tǒng)與坐標(biāo)變換
VC++單文檔導(dǎo)入背景圖片
VS2010/MFC編程入門之四十八(字體和文本輸出:文本輸出)
MFC繪圖總結(jié)(4):畫圖 | 求索閣
VC++技術(shù)內(nèi)幕(第四版)筆記
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服