图形输出基本图形显示用CDC绘图函数绘制基本图形.pptx
38页Example:在OnDraw函数中,添加如下语句 pDCSetPixel(50,50,RGB(0,0,255); 则点(50,50)被画为兰色 CDC: :MoveTo/LineTo 格式:CPoint MoveTo(int x,int y); CPoint MoveTo(POINT point); 功能:将当前位置移到(x,y)或point参数指定的点 返回:将先前位置(x,y)坐标返回给Cpoint对象 参数: x.新位置的逻辑x坐标 y-新位置的逻辑y坐标 point.指定的新位置可以是一个POINT结构或一个CPoint对象格式:BOOL LineTo(int x,int y); BOOL LineTo(POINT point); 功能:从当前位置向指定点绘制一条直线,但不包括指定的点 返回:若调用成功,则返回非0 参数: x .线段端点的逻辑x坐标 y-线段端点的逻辑y坐标 point.指定线段端点可以是一个POINT结构或一个CPoint对象 Example:在OnDraw函数中,添加如下语句 pDC-MoveTo( 10,10); pDC-LineTo(500,200); 则绘制一条从(10,10)到(500,200)的直线。
C:CDC:Arc,格式:BOOLAic(int xl,yl,int x2,int y2,int x3,int y3,int x4,inty4); BOOL Arc(LPCRECT IpRect,POINT ptStart,POINT ptEnd); 功能:绘制一个椭圆弧所画弧是由指定的限定矩形所定义的椭 圆的一部分 返回:若调用成功,则返回非0 参数:xl.限定矩形左上角的逻辑x坐标 yl-限定矩形左上角的逻辑y坐标 x2-限定矩形右下角的逻辑x坐标 y2 .限定矩形右下角的逻辑y坐标x3-弧起点的逻辑x坐标 y3 .弧起点的逻辑y坐标 x4-弧终点的逻辑x坐标 y4 .弧终点的逻辑y坐标,(不一定在弧上) (不一定在弧上) (不一定在弧上) (不一定在弧上)IpRect-指定限定矩形(以逻辑单位计),可以是一个CRect对象 或指向RECT结构的指针 ptStart-指定弧起点的逻辑(x,y)坐标,可以是一个POINT结构或一 个CPoint对象 ptEnd-指定弧终点的逻辑(x,y)坐标,可以是一个POINT结构或一 个CPoint对象 Example:在OnDraw函数中,添加如下语句 pDC-Arc(40,l 00,80,120,10,110,60,105); 则绘制一条椭圆弧。
其中,(10,110)为椭圆弧起点的逻辑坐标, (60,105)为椭圆弧终点的逻辑坐标Q:若把本例Arc函数的起点坐标和终点坐标对调,图形显示情况如何? 请给出显示结果ACDC:Ellipse 格式:BOOL Ellipse(int xl,yl,intx2,int y2); BOOL Ellipse(LPCRECT IpRect); 功能:绘制一个椭圆 返回:若调用成功,则返回非0 参数: xl .椭圆限定矩形左上角的逻辑x坐标 yl 椭圆限定矩形左上角的逻辑y坐标 x2 .椭圆限定矩形右下角的逻辑x坐标 y2-椭圆限定矩形右下角的逻辑y坐标 IpRect-指定椭圆的限定矩形(以逻辑单位计),可以是一个CRect 对象或指向RECT结构的指针Example:在OnDraw函数中,添加如下语句 pDC-Ellipse(100,200,400,300); pDCEllipse( 100,300,300,500); 则在矩形区(100,200,400,300)绘制一个椭圆,在正方形区 (100,300,300,500)绘制一个圆 A CDC: Rectangle 格式:BOOL Rectangle(int xl,int yljnt x2,int y2); BOOL Rectangle(LPCRECT IpRect); 功能:使用当前画刷绘制一个矩形。
返回:若调用成功,则返回非0 参数: xl .矩形左上角的逻辑x坐标 yl 矩形左上角的逻辑y坐标x2女形右下角的逻辑x坐标 y2-矩形右下角的逻辑y坐标 IpRect-指定矩形的逻辑坐标,可以是一个CRect对象或指向RECT 结构的指针 Example:在OnDraw函数中,添加如下语句 pDC-Rectangle(200,20,300,60); 则绘制一个矩形(200,20,300,60) ACDC:Polygon 格式:BOOL Polygon(LPPOINT IpPointsJnt nCount); 功能:绘制一个多边形 返回:若调用成功,则返回非0X1 .弦的限定矩形左上角的逻辑X坐标 yl 弦的限定矩形左上角的逻辑y坐标 x2 .弦的限定矩形右下角的逻辑x坐标 y2 弦的限定矩形右下角的逻辑y坐标 x3 .弦起点的逻辑x坐标 y3 弦起点的逻辑y坐标 x4 .弦终点的逻辑x坐标 y4-弦终点的逻辑y坐标 IpRect-指定限定矩形,可以是一个CRect对象或指向RECT结构的 指针 ptStait-指定弧起点,可以是一个CPoint对象或指向POINT结构 ptEnd-指定弧终点,可以是一个CPoint对象或指向POINT结构。
(x3,y3)和(x4,y4)可以是矩形内的一点,也可以是矩形外的一点Example:在OnDraw函数中,添加如下语句 pDC-Chord(100,20,300,300,130,100,250,250); 则绘制一条带弦的椭圆弧 ACDC:Pie 格式:BOOL Pie(int xljnt yl,int x2,int y2,int x3,int y3,int x4,int y4); BOOL Pie(LPRECT IpRect,POINT ptStart,PONT ptEnd); 功能:绘制一个饼图,即绘制椭圆弧并且弧的两个端点与圆心相连 返回:若函数调用成功,则返回非0 参数: xl 限定矩形左上角的逻辑x坐标 yl-限定矩形左上角的逻辑y坐标 x2 .限定矩形右下角的逻辑x坐标 y2-限定矩形右下角的逻辑y坐标x3 .孤起点的逻辑x坐标 y 3 -弧起点的逻辑y坐标 x4 .弧终点的逻辑x坐标 y4-弧终点的逻辑y坐标 IpRect-指定限定矩形,可以是一个CRect对象或指向RECT结构的 指针 ptStait-指定弧起点,可以是一个CPoint对象或指向POINT结构 ptEnd-指定弧终点,可以是一个CPoint对象或指向POINT结构。
(x3,y3)和(x4,y4)可以是矩形内的一点,也可以是矩形外的一点 Example:在OnDraw函数中,添加如下语句 pDC-Pie( 100,100,400,300,130,100,250,250); 则绘制一条椭圆弧并且弧的两个端点与圆心相连RoundRect,格式:BOOL RoundRect(int xljnt y 1 ,int x2,int y2,int x3,int y3); BOOL RoundRect(LPCRECT IpRect,POINT point); 功能:绘制一个圆角的矩形 返回:若调用成功则返回非0 参数: xl-矩形左上角的逻辑x坐标 yl-矩形左上角的逻辑y坐标 x2-矩形右下角的逻辑x坐标 y2-矩形右下角的逻辑y坐标 x3-椭圆逻辑宽度 y3-椭圆逻辑高度 IpRect-指定限定矩形的逻辑坐标可以是一个CRect对象或指向 RECT结构的指针BOOL PolyBezier(const POINT *lpPoint,int nCount); 绘制一段或多段Bezier样条(Spline) 若调用成功则返回非0oint-x坐标指定椭圆的逻辑宽度,y坐标指定椭圆的逻辑高度。
Example:在OnDraw函数中,添加如下语句 pDC-RoundRect( 100,100,400,300,50,50); 则绘制一个圆角矩形(100,100,400,300)o其中圆角用直径为50逻 辑单位的圆与该矩形的四个角内切得到 ACDC:PolyBezier(*),格式: 功能: 返回: 参数:,IpPoint.指向一个POINT结构的数组,其中包含样条的端点和控制 点 nCount-指定IpPoints数组中的点数,必须比画的样条数大1 3次Bezier曲线需要2个控制点和一个终点,还要一个起点,即4个 点决定一段Bezier曲线Example:在OnDraw函数中,添加如下语句 POINT pt7= 40,30,160,60,270,100,300,220, 300,220,(200,120,(400,20); pDC-PolyBezier(pt,7); 则在7个点间绘制一段贝塞尔样条曲线CDC有几个常用的派生类:CPaintDC、CClientDC、 CwindowDCo它们的用法有比较细微的差别 1、CPaintDC类 CPaintDC类(绘制设备环境类)适用于重画图形。
即该类仅在OnPaint 消息处理函数中使用 说明:这里OnPaint函数是由重画消息WM.PAINT (即窗口被重画时 产生此消息)来响应的 CPaintDC类构造器: 格式:CPaintDC(CWnd *pDC); 功能:构造一个CPaintDC对象 典型用法L CPaintDC dc(this); 以上代码的含义是在当前窗口中创建CPaintDC对象(即获取当前窗 口的设备环境)当使用ClassWizard类向导增添WM_PAINT消息,卜-典型用法2: CPamtDC *pDC=new CPaintDC(this);,delete pDC; Example:用MFC AppWizard创建一SDI程序;选择ClassWizard.-Messages -WM_PAJNT-Add Function-Edit Code,在OiiPaint函数中,添 加红色茹分的语句 O O O CPamtDC dc(tlns); / device context for painting / TODO: Add your message handler code here / Do not call CView:OiiPaintO for painting messages CRect rc; GetClientRect(,则阖PaintDC对象绘制一个椭圆,该椭圆充满用户区窗口(内切 于用户区边界)。
说明:由于CPaintDC CClientDC、CWiiidowDC类均有自动释放 设备环境的能力(由相应类的销毁器完成),所以释放设备环境 这一步也省略不写了但CDC类无此能力,所以必须要释放设备 环境这一步 2、CClientDC类 CClientDC类的使用比较随意,它可以在何时候使用(一般常用它 来进行实时作图) CClientDC类构造器: 格式:CClientDC(CWnd *pDC); 功能:构造一个CClientDC对象 典型用法: CClientDC dc(this); 以上代码的含义是在当前窗口用户区中创建CClientDC对象这里 的代码要由程序员增添Example:用MFC AppWizard创建一SDI程序;选择ClassWizard.-Messages -WM_LBUTTONDOWN-Add Function- Edit Code, 在 OiiLButtonDown函数中添加下面语句 CClientDC dc(this); CRect myrc; GetClientRect( 则单击MOUSE时,将绘制一个椭圆,该椭圆充满用户区窗口(内 切于用户区边界) 3、CWindowDC类 CWindowDC类的使用与CCl。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


