收藏 分销(赏)

创建画笔,画刷,颜色mfc.docx

上传人:pc****0 文档编号:7197701 上传时间:2024-12-27 格式:DOCX 页数:4 大小:17.41KB 下载积分:10 金币
下载 相关 举报
创建画笔,画刷,颜色mfc.docx_第1页
第1页 / 共4页
创建画笔,画刷,颜色mfc.docx_第2页
第2页 / 共4页


点击查看更多>>
资源描述
l 1.创建画笔 当用户创建一个用于绘图的设备环境对象时,系统自动将一个像素单位宽度的实黑线的画笔作为默认画笔。如果用户欲使用其他性质的画笔,首先就要创建该画笔。 创建画笔可以采用两种方法。一种方法是通过调用画笔Cpen类的一个带参构造函数来构造一个Cpen类画笔对象。 Cpen Pen(int nPenStyle,int nWidth,COLORREF rgbColor) 其中第一个参数用于指定画笔样式;第二个参数用于指定画笔宽度;第三个参数用于指定画笔颜色。画笔的样式说明参考表3.3;画笔的颜色可以通过Windows提供的GRB宏来设置,其使用格式为: RGB(nRed,nGreen,nBlue) 参数nRed、nGreen、nBlue分别表示红、绿、蓝分量值,数值范围为0~255。如RGB(0,0,0)表示黑色;RGB(255,0,0)表示红色。表3.4列出了常用颜色的RGB值。 表3.3 画笔的样式说明 样 式 说 明 PS_SOLID 实线 PS_DOT 点线 PS_DASH 虚线 PS_DASHDOT 点划线 PS_DASHDOTDOT 双点划线 PS_NULL 空的边框 PS_INSIDEFRAME 边框实验 注:各种虚线只有当线宽为1时才有效。 表3.4常用颜色的RGB值 颜 色 RGB分量值 颜 色 RGB分量值 浅红 255 0 0 深红 128 0 0 浅绿 0 255 0 深绿 0 128 0 浅蓝 0 0 255 深蓝 0 0 128 浅黄 255 255 0 深黄 128 128 0 浅青 0 255 255 深青 0 128 128 紫色 255 0 255 灰色 192 192 192 白色 255 255 255 黑色 0 0 0 下面的代码创建了一个蓝色实线画笔: CPen Pen(PS_SOLID,1,RGB(0,0,255)); 创建画笔的另一个方法是首先声明一个CPen对象,然后调用CPen类的成员函数CreatePen()创建特定的画笔。 CPen Pen; Pen.CretePen(int nPenStyle,int nWidth,COLORREF rgbColor); 如下代码同样创建一个蓝色实线画笔: CPen PenNew; PenNew.CreatePen(PS_SOLID,1,RGB(0,0,255)); 当需要多次改变画笔的属性时,多采用这种方法。 l 2.选择创建的画笔到设备环境中 创建画笔后,必须调用成员函数CDC::SelectObject()将创建的画笔选入设备环境对象中。如果选择成功,函数SelectObject()将返回原来画笔对象的指针。一般情况下,在选择新的画笔时应该保存原来的画笔对象,以备恢复。代码如下: CPen *pPenOld; pPenOld=pDC->SelectObject(&PenNew); l 3.删除画笔 创建和选择画笔后,就可以使用该画笔对象进行绘图了。绘图完成后,为了及时释放内存资源,应该调用成员函数CDC::SelectObject()恢复以前保存的画笔对象;调用成员函数CgdiObject::DeleteObject()删除当前画笔对象。代码如下: pDC->SelectObject(pPenOld); PenNew.DeleteObject(); 成员函数DeleteObject()用于删除底层的GDI对象,如果因为不慎,删除一个设备环境对象正在使用的GDI对象,将会引起应用程序的运行异常。 l 1.创建画刷 画刷有三种基本类型:纯色画刷、阴影画刷和图案画刷。创建画刷的一种方法是通过调用CBrush类三个不同的构造函数创建这三种类型的画刷。 创建纯色画刷: CBrush brush(RGBColor); 此构造函数的参数指定纯色画刷的颜色。如下创建一个红色画刷: CBrush brush(RGB(255,0,0)); 创建阴影画刷: CBrush brush(BrushStyle,RGBColor); 此构造函数的第一个参数指定画刷的样式,第二个参数指定颜色,画刷样式参见例3.2。如下创建一个交叉的绿色阴影画刷: CBrush brush2(HS_CROSS,RGB(0,255,0)); 创建图案画刷: CBrush brush(&temp); 此构造函数的参数指定画刷所使用的位图,该位图必须先装入内存中。 创建画刷的另一个方法,也可以先声明一个CBrush类画刷对象,然后调用初始化成员函数创建特定的画刷。 常见的成员函数有: CreateSolidBrush() 创建纯色画刷 CreateHatchBrush() 创建阴影画刷 CreatePatternBrush() 创建图案画刷 下面代码同样创建一个交叉的绿色阴影画刷。 CBrush BrushNew; BrushNew.CreateHatchBrush(HS_CROSS,RGB(0,255,0)); l 2. 选择画刷 创建画刷后,同样必须调用成员函数CDC::SelectObject()将创建的画刷选入设备环境对象中,同时保存以前的画刷。 CBrush *pBrushOld; pBrushOld=pDC->SelectObject(&BrushNew); l 3.删除画刷 同样为了释放资源,在使用完成画刷对象后,也要及时删除画刷对象,恢复原来的画刷对象。 l 1.文字信息显示 文字信息显示的成员函数为: BOOL TextOut(int x,int y,LPCTSTR lpszString); 在指定坐标(x,y)处显示字符串lpszString的内容,显示成功返回非0,否则返回0。 l 2.画点 画点的成员函数为: COLORREF SetPixel(int x,int y,COLORREF color); COLORREF SetPixel(POINT point,COLORREF color); 该函数在指定坐标(用参数x,y或point给出)处按给定颜色(color)画点,返回值为原来此坐标颜色。 l 3.取指定坐标点的颜色 取指定坐标点的颜色的成员函数为: COLORREF GetPixel(int x,int y) const; COLORREF GetPixel(POINT point) const; 返回值为指定坐标处的颜色。 l 4.画线 画线工作需经两步完成:首先确定线的起始端位置,这可通过调用成员函数MoveTo完成,其原型为: Cpoint MoveTo(int x,int y); Cpoint MoveTo(POINT point); MoveTo将绘图位置移至指定坐标处,并返回移动前的绘图位置。确定了线的起点后,即可使用成员函数LineTo画线: BOOL LineTo(int x,int y); BOOL LineTo(POINT point); 其参数为线终点的坐标。 l 5.绘制矩形 绘制矩形的成员函数为: BOOL Rectangle(int x1,int y1,int x2,int y2); BOOL Rectangle(LPCRECT lpRect); 其参数为需要绘制的矩形的左上角坐标(x1,y1)和右下角坐标(x2,y2)。 l 6.绘制椭圆 绘制椭圆的成员函数为: BOOL Ellipse(int x1,int y1,int x2,int y2); BOOL Ellipse(LPCRECT lpRect); 其参数的含义为所绘椭圆的包含矩形的左上角和右下角坐标。 l 7.画多边形 画多边形的成员函数为: BOOL Polygon(LPPOINT lpPoints,int nCount); 其中参数lpPoints为一LPPOINT类型的指针,可用CPoint数组(存放多边形的各顶点坐标)作为实参。参数nCount为顶点个数。例如: CPaintDC dc(this); CPoint pointPoly[3]; pointPoly[0]=CPoint(100,100); pointPoly[1]=CPoint(200,100); pointPoly[2]=CPoint(200,200); dc.Polygon(pointPoly,3); 在窗口客户区相应位置画出一个三角形。 l 8.获取客户区的坐标 为了某些绘图效果,可能需要知道框架窗口客户区当前的大小。可通过Wnd类的成员函数GetClientRect()实现,其调用方法为: void GetClientRect(LPRECT lpRect); l 9.其他绘图函数 其他绘图函数还有画弧Arc()、画弓形Chord()、画扇形Pie()、画圆角矩形InvertRect()等,具体使用方法可参看MSDN联机帮助。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服