《画点画线.ppt》由会员分享,可在线阅读,更多相关《画点画线.ppt(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、画画点点和和线线 SetPixel SetPixel函数在指定的函数在指定的x和和y坐标以特定的颜色设坐标以特定的颜色设定图素:定图素:SetPixel(hdc,x,y,crColor);2023/1/22直直 线线Windows可以画直线、椭圆线(椭圆圆周上的曲线)可以画直线、椭圆线(椭圆圆周上的曲线)和贝塞尔曲线。和贝塞尔曲线。Windows 支持的支持的7个画线函数是:个画线函数是:LineTo 画直线。画直线。Polyline和和PolylineTo 画一系列相连的直线。画一系列相连的直线。PolyPolyline 画多组相连的线。画多组相连的线。Arc 画椭圆线。画椭圆线。PolyB
2、ezier和和PolyBezierTo 画贝塞尔曲线。画贝塞尔曲线。ArcTo和和AngleArc 画椭圆线。画椭圆线。PolyDraw 画一系列相连的线以及贝塞尔曲线画一系列相连的线以及贝塞尔曲线2023/1/23既画线也填入所画图形的封闭区域的函数既画线也填入所画图形的封闭区域的函数 Rectangle 画矩形。画矩形。Ellipse 画椭圆。画椭圆。RoundRect 画带圆角的矩形。画带圆角的矩形。Pie 画椭圆的一部分,使其看起来像一个扇形。画椭圆的一部分,使其看起来像一个扇形。Chord 画椭圆的一部分,以呈弓形。画椭圆的一部分,以呈弓形。2023/1/24画一条直线,必须呼叫两个
3、函数。画一条直线,必须呼叫两个函数。第一个函数指定了线的开始点,第一个函数指定了线的开始点,第二个函数指定了线的终点:第二个函数指定了线的终点:MoveToEx(hdc,xBeg,yBeg,NULL);LineTo(hdc,xEnd,yEnd);MoveToEx实际上不会画线,它只是设定了设备内容的实际上不会画线,它只是设定了设备内容的目前位置属性。然后目前位置属性。然后LineTo函数从目前的位置到它函数从目前的位置到它所指定的点画一条直线。目前位置只是用于其它几个所指定的点画一条直线。目前位置只是用于其它几个GDI函数的开始点。在内定的设备内容中,目前位置最初设定函数的开始点。在内定的设备
4、内容中,目前位置最初设定在点(在点(0,0)。如果在呼叫)。如果在呼叫LineTo之前没有设定目前位置,之前没有设定目前位置,那么它将从显示区域的左上角开始画线。那么它将从显示区域的左上角开始画线。2023/1/25矩矩 形形 Rectangle(hdc,xLeft,yTop,xRight,yBottom);点点(xLeft,yTop)是矩形的左上角,是矩形的左上角,(xRight,yBottom)是矩是矩形的右下角。用函数形的右下角。用函数Rectangle画出的图形如图所示,矩形画出的图形如图所示,矩形的边总是平行于显示器的水平和垂直边。的边总是平行于显示器的水平和垂直边。2023/1/2
5、6椭椭 圆圆 Ellipse(hdc,xLeft,yTop,xRight,yBottom);用用Ellipse函数画出的图形如图所示(加上了虚线函数画出的图形如图所示(加上了虚线构成的边界框)。构成的边界框)。2023/1/27圆角矩形圆角矩形 画圆角矩形的函数使用与函数画圆角矩形的函数使用与函数Rectangle及及Ellipse函数相同函数相同的边界框,还包含另外两个参数:的边界框,还包含另外两个参数:RoundRect(hdc,xLeft,yTop,xRight,yBottom,xCornerEllipse,yCornerEllipse);Windows使用一个小椭圆来画圆角,这个椭圆的
6、宽为使用一个小椭圆来画圆角,这个椭圆的宽为xCornerEllipse,高为,高为yCornerEllipse。xCornerEllipse和和yCornerEllipse的值越大,角就越明显。如果的值越大,角就越明显。如果xCornerEllipse等于等于xLeft与与xRight的差,且的差,且yCornerEllipse等于等于yTop与与yBottom的差,那么的差,那么RoundRect函数将画出一个函数将画出一个椭圆。椭圆。2023/1/28Arc函数函数 Arc(hdc,xLeft,yTop,xRight,yBottom,xStart,yStart,xEnd,yEnd);202
7、3/1/29Chord函数函数 Chord(hdc,xLeft,yTop,xRight,yBottom,xStart,yStart,xEnd,yEnd);Windows用一条假想的线将用一条假想的线将(xStart,yStart)与椭圆的中心连接,从该线与与椭圆的中心连接,从该线与边界框的交点开始,边界框的交点开始,Windows按反时针方向,沿着椭圆画一条弧。按反时针方向,沿着椭圆画一条弧。Windows还用另一条假想的线将还用另一条假想的线将(xEnd,yEnd)与椭圆的中心连接,在该线与椭圆的中心连接,在该线与边界框的交点处,与边界框的交点处,Windows停止画弧。停止画弧。2023/
8、1/210Pie函数函数 Pie(hdc,xLeft,yTop,xRight,yBottom,xStart,yStart,xEnd,yEnd);Windows用一条假想的线将用一条假想的线将(xStart,yStart)与椭圆的中心连接,从该线与与椭圆的中心连接,从该线与边界框的交点开始,边界框的交点开始,Windows按反时针方向,沿着椭圆画一条弧。按反时针方向,沿着椭圆画一条弧。Windows还用另一条假想的线将还用另一条假想的线将(xEnd,yEnd)与椭圆的中心连接,在该线与椭圆的中心连接,在该线与边界框的交点处,与边界框的交点处,Windows停止画弧。停止画弧。2023/1/211
9、CreatePen函数函数 hPen=CreatePen(iPenStyle,iWidth,crColor);iPenStyle参数确定画笔是实线、点线还是虚线;参数确定画笔是实线、点线还是虚线;下图显示了每种画笔产生的画笔样式。下图显示了每种画笔产生的画笔样式。对于对于PS_SOLID、PS_NULL和和PS_INSIDEFRAME画笔样式,画笔样式,iWidth参数是画笔的宽参数是画笔的宽度。度。iWidth值为值为0则意味着画笔宽度为一个图素。现有画笔是一个图素宽。如果指定的则意味着画笔宽度为一个图素。现有画笔是一个图素宽。如果指定的是点划线或者虚线式画笔样式,同时又指定一个大于是点划线
10、或者虚线式画笔样式,同时又指定一个大于1的实际宽度,那么的实际宽度,那么Windows将使将使用实线画笔来代替。用实线画笔来代替。CreatePen的的crColor参数是一个参数是一个COLORREF值,它指定画笔的颜色。值,它指定画笔的颜色。2023/1/212下面是建立、选择和删除画笔的一种方法。假设您的程序使用三种画笔下面是建立、选择和删除画笔的一种方法。假设您的程序使用三种画笔一种宽度为一种宽度为1的黑画笔、一种宽度为的黑画笔、一种宽度为3的红画笔和一种黑色点式画笔,的红画笔和一种黑色点式画笔,您可以先定义三个变量来存放这些画笔的句柄:您可以先定义三个变量来存放这些画笔的句柄:sta
11、tic HPEN hPen1,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
12、,hPen2);SelectObject(hdc,hPen1);2023/1/213绘制填入区域绘制填入区域图形以目前设备内容中选择的画刷来填入。内定图形以目前设备内容中选择的画刷来填入。内定情况下,使用现有对象,这意味着图形内部将画情况下,使用现有对象,这意味着图形内部将画为白色。为白色。Windows定义六种现有画刷:定义六种现有画刷:WHITE_BRUSH、LTGRAY_BRUSH、GRAY_BRUSH、DKGRAY_BRUSH、BLACK_BRUSH和和NULL_BRUSH(也叫(也叫HOLLOW_BRUSH)。)。2023/1/214先定义一个画刷句柄变量:先定义一个画刷句柄变量:H
13、BRUSH hBrush;您可以通过呼叫您可以通过呼叫GetStockObject来取得来取得GRAY_BRUSH的句柄:的句柄:hBrush=GetStockObject(GRAY_BRUSH);您可以呼叫您可以呼叫SelectObject将它选进设备内容:将它选进设备内容:SelectObject(hdc,hBrush);现在,如果您要画上表中的任一个图形,则其内部将为灰色。现在,如果您要画上表中的任一个图形,则其内部将为灰色。2023/1/215用画刷填入内部用画刷填入内部下面是建立逻辑画刷的第一个函数:下面是建立逻辑画刷的第一个函数:hBrush=CreateSolidBrush(cr
14、Color);函数中的函数中的Solid并不是指画刷为纯色。在将画刷选入设备内并不是指画刷为纯色。在将画刷选入设备内容中时,容中时,Windows建立一个混色的位图,并为画刷使用该建立一个混色的位图,并为画刷使用该位图。位图。还可以使用由水平、垂直或者倾斜的线组成的影线标记还可以使用由水平、垂直或者倾斜的线组成的影线标记(hatch marks)来建立画刷,这种风格的画刷对着色条形来建立画刷,这种风格的画刷对着色条形图的内部和在绘图机上进行绘图最有用。建立影线画刷的图的内部和在绘图机上进行绘图最有用。建立影线画刷的函数为:函数为:hBrush=CreateHatchBrush(iHatchSt
15、yle,crColor);2023/1/216iHatchStyle参数描述影线标记的外观。参数描述影线标记的外观。下图显示了六种可用的影线标记风格。下图显示了六种可用的影线标记风格。2023/1/217Polygon-函数功能函数功能该函数画一个由直线相间的两个以上顶点组成的多边形,用当前画笔画多边形轮廓,用当前画刷和多边形填充模式填充多边形。Polygon-函数原型函数原型BOOLPolygon(HDChdc,CONSTPOINT*lpPoints,intnCount);Polygon-主要参数主要参数hdc:设备环境句柄。lpPoints:指向用于指定多边形顶点的POINT结构数组的指针。nCount:指定数组中顶点个数,此值必须大于等于2。返回值:如果函数调用成功,返回值非零;如果函数调用失败,返回值是0。备注:此多边形通过画一条从最后一个顶点到第一个顶点的线段而自动闭合起来。函数Polygon不使用和改变当前位置。2023/1/218