VISUAL C++ MFC编程XB.ppt
文本预览下载声明
(4)画封闭曲线 Windows中提供了一组画封闭曲线的函数,包括绘制矩形、多边性、椭圆等,这些画封闭曲线的函数不但可以利用画笔来画出轮廓线,同时还可以利用画刷来填充这些封闭曲线所围成的区域。 (a) Rectangle()函数用来画矩形,函数原型说明如下: BOOL CDC:: Rectangle(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect); 其中,参数nLeftRect和 nTopRect给出了矩形左上角的坐标,而nRightRect和 nBottomRect则给出矩形的右下角坐标。 (b)Ellipse()函数的作用则是画椭圆形。在Ellipse()函数中,椭圆是由其外接矩形来确定的,外接矩形的中心与椭圆中心重合,矩形的长与宽和椭圆的长短轴相等。函数说明如下: BOOL CDC:: Ellipse(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect); 其中的参数说明与Rectangle()函数相同。 (c)RoundRect()函数用来画圆角矩形, 函数原型说明如下: BOOL CDC:: RoundRect(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect,int nWidth, int nHeight);其中的前四个参数与Rectangle()函数相同,nWidth表示圆角的宽度, nHeight表示圆角的高度。 (d) Polygon()函数用来画封闭的任意多边形,其函数原型说明如下: BOOL CDC:: Polygon((COUST POINT *lpPoints, int cCount); 其中的参数说明与Polyline()函数相同。但两个函数有区别,Polygon()函数会自动将起点和终点相连形成封闭的多边形,而Polyline()函数则画出多条折线,只有当最后一点与起点相同时才画出封闭的多边形。 示例,绘制矩形、圆角矩形、椭圆和多边形,程序如下: //绘制矩形、圆角矩形、椭圆和多边形 pDC-Rectangle(190,270,250,310); pDC-RoundRect(265,270,330,310,30,20); pDC-Ellipse(260-50,200-30,260+50,200+30); POINT polygonPts[3]={{390,160},{430,220}, {350,210}}; pDC-Polygon(polygonPts,3); (5) 画笔与画刷 当绘制图形时,线条的属性,包括颜色、宽度、样式等都是由画笔来确定的。程序员可以创建画笔,定义画笔的属性,从而画出多彩的图形。 创建画笔包括CreatePen()和CreatePenIndirect()两个函数。MFC将这些函数封装在CPen类中,这样画笔就能够被视为对象进行处理。下面介绍创建画笔的方法。 方法一:直接构造一个CPen对象,并将定义画笔的参数传给它,例如: CPen pen(PS_SOLID,1,RGB(255,0,0)); 创建一个宽度为一个像素、实线和红色的画笔。 方法二:首先声明一个没有初始化的CPen类对象,然后再用CreatePen()函数定义画笔的属性。例如, CPen Pen; Pen.CreatePen (PS_SOLID,1,RGB(255,0,0)); 方法三:先声明一个CPen类对象和一个描述画笔结构的LOGPEN类对象,并填入画笔的属性值,然后调用CreatePenIndirect()函数来创建画笔。如下所示: CPen Pen; LOGPEN LogPen; LogPen.lopnStyle=PS_SOLID; LogPen.lopnWidth=1; LogPen.lpenColor=RGB(255,0,0); Pen.CreatePenIndirect(LogPen); 画笔包括样式、宽度和颜色三个属性。下表列出了GDI画笔的样式。 int i1; int nPenStyle[]={PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_DASHDOTDOT,PS_NULL, PS_INSIDEFRAME}; CPen *pNewPen;
显示全部