CDC类的主要绘图成员函数.docx

上传人:大米 文档编号:559548243 上传时间:2023-10-14 格式:DOCX 页数:15 大小:197.47KB
返回 下载 相关 举报
CDC类的主要绘图成员函数.docx_第1页
第1页 / 共15页
CDC类的主要绘图成员函数.docx_第2页
第2页 / 共15页
CDC类的主要绘图成员函数.docx_第3页
第3页 / 共15页
CDC类的主要绘图成员函数.docx_第4页
第4页 / 共15页
CDC类的主要绘图成员函数.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《CDC类的主要绘图成员函数.docx》由会员分享,可在线阅读,更多相关《CDC类的主要绘图成员函数.docx(15页珍藏版)》请在金锄头文库上搜索。

1、CDC类的主要绘图成员函数 CDC类中常用绘图函数 1)绘制像素函数原型:COLORREF SetPixel(int x,int y,COLORREF crColor );设置某像素点的RGB值2)获取像素颜色函数原型:COLORREF GetPixel(int x,int y)const;返回值:指定像素的RGB值。参数说明:得到指定像素的RGB颜色值一、画笔函数画笔是用来绘制直线、曲线或图形的边界线,是绘图工具类之一画笔通常具有线型、宽度和颜色三种属性画笔的线型通常有实线、虚线、点线、点划线、双点划线、不可见线和内框架线7种,这些线型都是以PS_为前缀的预定义标识符默认的画笔是一个像素单位

2、的黑色实线要想更换画笔,可以在创建新画笔对象后,将其选入设备上下文,就可使用新画笔进行绘图。1)创建画笔函数原型:BOOL CreatePen(int nPenStyle,int nWidth,COLORREF crColor);返回值:非零。参数说明:第一个参数nPenStyle是画笔的风格代码第二个参数nWidth是画笔的宽度第三个参数crColor是画笔的颜色。PS_SOLID;实线;宽度任意指定PS_DASH;虚线;宽度1(不可任意指定)PS_DOT;点线;宽度1(不可任意指定)PS_DASHDOT;点划线;宽度1(不可任意指定)PS_DASHDOTDOT;双点画线;宽度1(不可任意指

3、定)PS_NULL;不可见线;宽度1(不可任意指定)PS_INSIDEFRAME;内框架线;宽度任意指定2)选择画笔函数原型:Cpen *SelectObject(Cpen *pPen);返回值:被替代画笔的指针。参数说明:参数pPen是Cpen类的被选中的新画笔对象指针。本函数把原画笔换成新画笔,同时返回指向原画笔的指针。3)删除画笔函数原型:BOOL DeleteObject( );返回值:非零。参数说明:画笔使用完毕,把已成自由状态的画笔从系统内存中清除。4)选择一支库画笔函数原型:virtual CGdiObject *SelectStockObject(int nIndex);返回值

4、:被替代的CGdiObject类对象的指针。 参数说明:参数nIndex是库笔代码Windows系统中准备了一些使用频率较高的画笔,不需要创建,可以直接选用。同样,使用完库画笔时也不需要调用DeleteObject()函数从内存中删除已使用过的画笔。三种常用库笔:BLACK_PEN宽度为1的黑笔实线笔;WHITE_PEN宽度为1的白笔实线笔;NULL_PEN透明笔二、画刷函数(图形内部进行填充)1)创建实体画刷函数BOOL CreateSolidBrush(COLORREF crColor );选择画刷函数2)CBrush *SelectObject(CBrush *pBrush );删除画刷

5、函数3)BOOL DeleteObject( );创建阴影画刷函数4)BOOL CreateHatchBrush(int nIndex,COLORREF crColor);第一个参数nIndex是阴影样式代码第二个参数crColor是阴影线的颜色5)选择一只库画刷函数virtual CGdiObject *SelectStockObject(int nIndex);参数:LTGRAY_BRUSH:亮灰色画刷;BLACK_BRUSH黑色画刷;NULL_BRUSH:空画刷(相当于HOLLOW_BRUSH);WHITE_BRUSH:白色画刷;DKGRAY_BRUSH 深灰色画刷;GRAY_BRUSH

6、灰色画刷;HOLLOW_BRUSH 中空画刷三、绘制矩形函数原型:BOOL Rectangle(int x1,int y1,int x2,int y2);返回值:非零。参数说明:该函数使用当前画刷填充矩形内部,并用当前画笔绘制矩形边界线。CPen MyPen,* OldPen; MyPen.CreatePen(PS_SOLID,1,RGB(0,0,255); OldPen=pDC-SelectObject(&MyPen);CBrush MyBrush,*OldBrush;MyBrush.CreateSolidBrush(RGB(255,0,0);OldBrush=pDC-SelectObjec

7、t(&MyBrush);pDC-Rectangle(100,100,600,300);/画矩形pDC-SelectObject(OldPen); /画框线为蓝色MyPen.DeleteObject();pDC-SelectObject(OldBrush); /填充为红色MyBrush.DeleteObject();坐标映射:MM_TEXT 每个逻辑单位等于一个设备像素,x向右为正,y向下为正MM_HIENGLISH 每个逻辑单位为0.001英寸,x向右为正,y向上为正MM_LOENGLISH 每个逻辑单位为0.01英寸,x向右为正,y向上为正MM_HIMETRIC 每个逻辑单位为0.01mm,

8、x向右为正,y向上为正MM_LOMETRIC 每个逻辑单位为0.1mm,x向右为正,y向上为正MM_TWIPS每个逻辑单位为一个点的1/20(一个点是1/72英寸),x向右为正,y向上为正MM_ANISOTRPIC x,y 可变比例MM_ISOTROPIC x,y 等比例我们就可以通过调用CDC:SetMapMode(int nMapMode)来设置相应的映射模式。例如:若将映射模式设置为MM_LOMETRIC,那么不管在什么设备中调用上述语句,都将显示出20*20mm的方块。而MM_ISOTROPIC映射模式下:纵横比总是1:1,也就是说,无论比例因子如何变化,圆总是圆的。但,MM_ANIS

9、OTROPIC映射模式下,x和y的比例因子可以独立地变化,即圆可以被拉扁成椭圆形状。在映射模式MM_ANISOTROPIC和MM_ISOTROPIC中,常常可以调用CDC:SetWindowExt(设置窗口大小)和CDC:SetViewportExt(设置视口大小)函数来设置所需要的比例因子。“窗口”和“视口”的概念往往不易理解。所谓“窗口”,可以理解是一种逻辑坐标下的窗口,而“视口”是我们实际看到的那个窗口,也就是设备坐标下的窗口,根据“窗口”和“视口”的大小就可以确定x和y的比例因子,它们的关系如下:x比例因子=视口x大小/窗口x大小y比例因子=视口y大小/窗口y大小四、绘制椭圆函数原型:

10、BOOL Ellipse(int x1,int y1,int x2,int y2);返回值:非零。参数说明:Ellipse函数中,参数x1,y1是限定椭圆范围的外接矩形左上角点的坐标;参数x2,y2是限定椭圆范围的外接矩形右下角点的坐标注意VC+中没有专门的画圆函数,只是把圆绘制为长半轴和短半轴相等的椭圆。Ellipse函数使用当前画刷填充椭圆内部,并用当前画笔绘制椭圆边界线。例 将一个圆绘制在视区中央,圆的形状依据视区形状而定。当窗口的形状发生改变时,圆的形状也随之改变。坐标系的中点位于屏幕中心,X轴向右,Y轴向上。圆的边界为一像素宽的蓝色边界线,内部填充为红色。CRect Rect; /定

11、义矩形对象GetClientRect(&Rect); /获得当前窗口的客户区大小pDC-SetMapMode(MM_ANISOTROPIC); /设置MM_ANISOTROPIC映射模式 pDC-SetWindowExt(Rect.Width(),-Rect.Height(); /设置窗口范围pDC-SetViewportExt(Rect.right,-Rect.bottom); /设置视区范围pDC-SetViewportOrg(Rect.right/2,Rect.bottom/2); /设置视口原点CPen MyPen,*OldPen; MyPen.CreatePen(PS_SOLID,1

12、,RGB(0,0,255); OldPen=pDC-SelectObject(&MyPen);CBrush MyBrush,*OldBrush;MyBrush.CreateSolidBrush(RGB(255,0,0);OldBrush=pDC-SelectObject(&MyBrush);pDC-Ellipse(-Rect.right/2, -Rect.bottom/2,Rect.right/2,Rect.bottom/2);pDC-SelectObject(OldPen); /蓝边MyPen.DeleteObject();pDC-SelectObject(OldBrush); /填充红色M

13、yBrush.DeleteObject();五、绘制多边形函数BOOL Polygon(LPPOINT lpPoints,int nCount);参数说明:第一个参数lpPoints指定多边形顶点数组中每一个顶点是一个POINT结构或CPoint对象第二个参数nCount指定多边形数组中的顶点个数该函数用当前画笔绘制多边形边界线,用当前画刷填充多边形内部。例 绘制四个顶点分别位于视区上部中点、右部中点、下部中点和左部中点的菱形。边界线为蓝色,内部用红色填充CRect Rect;GetClientRect(&Rect); /获得客户区CPen PenBlue(PS_SOLID, 5, RGB(0

14、, 0, 255); /定义粗蓝色画笔,绘制边界线CPen* OldPen=pDC-SelectObject(&PenBlue); /选取画笔CBrush BrushRed(RGB(255, 0, 0); /定义红色画刷,填充多边形内部CBrush* OldBrush = pDC-SelectObject(&BrushRed); /选取画刷CPoint p4; /定义多边形顶点数组p0.x=Rect.left+Rect.Width()/2;p0.y=Rect.top; /计算顶部中点p1.x=Rect.right;p1.y=Rect.top+Rect.Height()/2; /计算右部中点p2.x=p0.x;p2.y=Rect.bottom; /计算下部中点p3.x=Rect.left;p3.y=p1.y; /计算左部中点pDC-Polygon(p, 4);/绘制多边形pDC-SelectObject(OldPen);/画笔勾边pDC-SelectObject(OldBrush);/画刷填充六、填充函数void FillRect(LPCRECT lpRect,CBrush *pBrush);参数说明:第一个参数lpRect指定矩形,是一个Rect结构或CRect对象第二个参数pBrush指定画刷对象指针。该函数将用当前画刷填充矩形内部,但

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号