画点画线

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

画点和线2020/2/252SetPixel•SetPixel函数在指定的x和y坐标以特定的颜色设定图素:•SetPixel(hdc,x,y,crColor);2020/2/253直线•Windows可以画直线、椭圆线(椭圆圆周上的曲线)和贝塞尔曲线。Windows支持的7个画线函数是:•LineTo画直线。•Polyline和PolylineTo画一系列相连的直线。•PolyPolyline画多组相连的线。•Arc画椭圆线。•PolyBezier和PolyBezierTo画贝塞尔曲线。•ArcTo和AngleArc画椭圆线。•PolyDraw画一系列相连的线以及贝塞尔曲线2020/2/254既画线也填入所画图形的封闭区域的函数•Rectangle画矩形。•Ellipse画椭圆。•RoundRect画带圆角的矩形。•Pie画椭圆的一部分,使其看起来像一个扇形。•Chord画椭圆的一部分,以呈弓形。2020/2/255画一条直线,必须呼叫两个函数。第一个函数指定了线的开始点,第二个函数指定了线的终点:MoveToEx(hdc,xBeg,yBeg,NULL);LineTo(hdc,xEnd,yEnd);MoveToEx实际上不会画线,它只是设定了设备内容的「目前位置」属性。然后LineTo函数从目前的位置到它所指定的点画一条直线。目前位置只是用于其它几个GDI函数的开始点。在内定的设备内容中,目前位置最初设定在点(0,0)。如果在呼叫LineTo之前没有设定目前位置,那么它将从显示区域的左上角开始画线。2020/2/256矩形•Rectangle(hdc,xLeft,yTop,xRight,yBottom);•点(xLeft,yTop)是矩形的左上角,(xRight,yBottom)是矩形的右下角。用函数Rectangle画出的图形如图所示,矩形的边总是平行于显示器的水平和垂直边。2020/2/257椭圆•Ellipse(hdc,xLeft,yTop,xRight,yBottom);•用Ellipse函数画出的图形如图所示(加上了虚线构成的边界框)。2020/2/258圆角矩形•画圆角矩形的函数使用与函数Rectangle及Ellipse函数相同的边界框,还包含另外两个参数:•RoundRect(hdc,xLeft,yTop,xRight,yBottom,xCornerEllipse,yCornerEllipse);•Windows使用一个小椭圆来画圆角,这个椭圆的宽为xCornerEllipse,高为yCornerEllipse。xCornerEllipse和yCornerEllipse的值越大,角就越明显。如果xCornerEllipse等于xLeft与xRight的差,且yCornerEllipse等于yTop与yBottom的差,那么RoundRect函数将画出一个椭圆。2020/2/259Arc函数•Arc(hdc,xLeft,yTop,xRight,yBottom,xStart,yStart,xEnd,yEnd);2020/2/2510Chord函数•Chord(hdc,xLeft,yTop,xRight,yBottom,xStart,yStart,xEnd,yEnd);•Windows用一条假想的线将(xStart,yStart)与椭圆的中心连接,从该线与边界框的交点开始,Windows按反时针方向,沿着椭圆画一条弧。Windows还用另一条假想的线将(xEnd,yEnd)与椭圆的中心连接,在该线与边界框的交点处,Windows停止画弧。2020/2/2511Pie函数•Pie(hdc,xLeft,yTop,xRight,yBottom,xStart,yStart,xEnd,yEnd);•Windows用一条假想的线将(xStart,yStart)与椭圆的中心连接,从该线与边界框的交点开始,Windows按反时针方向,沿着椭圆画一条弧。Windows还用另一条假想的线将(xEnd,yEnd)与椭圆的中心连接,在该线与边界框的交点处,Windows停止画弧。2020/2/2512CreatePen函数•hPen=CreatePen(iPenStyle,iWidth,crColor);•iPenStyle参数确定画笔是实线、点线还是虚线;•下图显示了每种画笔产生的画笔样式。对于PS_SOLID、PS_NULL和PS_INSIDEFRAME画笔样式,iWidth参数是画笔的宽度。iWidth值为0则意味着画笔宽度为一个图素。现有画笔是一个图素宽。如果指定的是点划线或者虚线式画笔样式,同时又指定一个大于1的实际宽度,那么Windows将使用实线画笔来代替。CreatePen的crColor参数是一个COLORREF值,它指定画笔的颜色。2020/2/2513•下面是建立、选择和删除画笔的一种方法。假设您的程序使用三种画笔-一种宽度为1的黑画笔、一种宽度为3的红画笔和一种黑色点式画笔,您可以先定义三个变量来存放这些画笔的句柄:staticHPENhPen1,hPen2,hPen3;•在处理WM_CREATE期间,您可以建立这三种画笔:hPen1=CreatePen(PS_SOLID,1,0);hPen2=CreatePen(PS_SOLID,3,RGB(255,0,0));hPen3=CreatePen(PS_DOT,0,0);•在处理WM_PAINT期间,或者是在拥有一个设备内容有效句柄的任何时间里,您都可以将这三个画笔之一选进设备内容并用它来画线:SelectObject(hdc,hPen2);SelectObject(hdc,hPen1);2020/2/2514绘制填入区域•图形以目前设备内容中选择的画刷来填入。内定情况下,使用现有对象,这意味着图形内部将画为白色。Windows定义六种现有画刷:WHITE_BRUSH、LTGRAY_BRUSH、GRAY_BRUSH、DKGRAY_BRUSH、BLACK_BRUSH和NULL_BRUSH(也叫HOLLOW_BRUSH)。2020/2/2515先定义一个画刷句柄变量:HBRUSHhBrush;您可以通过呼叫GetStockObject来取得GRAY_BRUSH的句柄:hBrush=GetStockObject(GRAY_BRUSH);您可以呼叫SelectObject将它选进设备内容:SelectObject(hdc,hBrush);现在,如果您要画上表中的任一个图形,则其内部将为灰色。2020/2/2516用画刷填入内部•下面是建立逻辑画刷的第一个函数:hBrush=CreateSolidBrush(crColor);•函数中的Solid并不是指画刷为纯色。在将画刷选入设备内容中时,Windows建立一个混色的位图,并为画刷使用该位图。•还可以使用由水平、垂直或者倾斜的线组成的「影线标记(hatchmarks)」来建立画刷,这种风格的画刷对着色条形图的内部和在绘图机上进行绘图最有用。建立影线画刷的函数为:hBrush=CreateHatchBrush(iHatchStyle,crColor);2020/2/2517•iHatchStyle参数描述影线标记的外观。•下图显示了六种可用的影线标记风格。2020/2/2518Polygon-函数功能该函数画一个由直线相间的两个以上顶点组成的多边形,用当前画笔画多边形轮廓,用当前画刷和多边形填充模式填充多边形。Polygon-函数原型BOOLPolygon(HDChdc,CONSTPOINT*lpPoints,intnCount);Polygon-主要参数hdc:设备环境句柄。lpPoints:指向用于指定多边形顶点的POINT结构数组的指针。nCount:指定数组中顶点个数,此值必须大于等于2。返回值:如果函数调用成功,返回值非零;如果函数调用失败,返回值是0。备注:此多边形通过画一条从最后一个顶点到第一个顶点的线段而自动闭合起来。函数Polygon不使用和改变当前位置。

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功