《可视化编程》PPT课件.ppt
《《可视化编程》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《可视化编程》PPT课件.ppt(87页珍藏版)》请在三一办公上搜索。
1、1,第4章 GDI与Windows绘图,设备环境类绘图工具绘图函数文本处理位图与位操作图标与光标,2,设备文本的概念,设备文本用于程序的可视化输出设备文本提供一张画布,可在上面书写文字,或绘制点、直线、曲线等图形既可通过屏幕显示,还可通过打印机等设备输出,应用程序,GDI,设备驱动程序,输出设备,3,设备环境类(1),CDC:MFC的设备文本基类CClientDC:客户区(不包括边框、标题栏和菜单栏)的设备文本类CWindowDC:程序窗口的设备文本类CPaintDC:OnPaint函数使用的设备文本类CMetaFileDC:图元文件的设备文本类,4,设备环境类(2),画线程序的例子(CDC)
2、(添加start),void CTestView:OnLButtonUp(UINT nFlags,CPoint point)CDC*pDC=GetDC();pDC-MoveTo(start);pDC-LineTo(point);ReleaseDC(pDC);,5,设备环境类(3),画线程序的例子(CClientDC),void CTestView:OnLButtonUp(UINT nFlags,CPoint point)CClientDC dc(this);/CClientDC dc(GetParent();dc.MoveTo(start);dc.LineTo(point);,6,设备环境类(
3、4),画线程序的例子(CWindowDC),void CTestView:OnLButtonUp(UINT nFlags,CPoint point)CWindowDC dc(this);/CWindowDC dc(GetParent();/CWindowDC dc(GetDesktopWindow();dc.MoveTo(start);dc.LineTo(point);,7,设备环境类(5),8,绘图的基本方法,通过CClientDC构造对象通过GetDC获得设备环境指针,CClientDC dc(this);dc.Ellipse(10,10,200,200);,CDC*pDC=GetDC()
4、;pDC-Ellipse(10,10,200,200);ReleaseDC(pDC);,9,CPoint、CSize与CRect(1),CPoint:封装POINT结构的类定义一个点坐标,成员为x、yCRect:封装RECT结构的类定义一个矩形区域,成员为left、right、top、bottomCSize:封装SIZE结构的类定义矩形区域的大小,成员为cx、cy,10,CPoint、CSize与CRect(2),CPoint类的例子,POINT p;p.x=10;p.y=10;pDC-TextOut(p.x,p.y,POINT为一个结构,成员只有x,y);CPoint q,q1(10,10)
5、,q2(0,90);q=q1+q2;pDC-TextOut(q.x,q.y,CPoint为一个类,封装POINT结构,成员有x,y等);,11,绘图工具(1),设备文本类(CDC)提供绘图工具,例如CPen、CBrush与CFont等,基类是CGdiObject默认的画笔是黑色,宽度是一个像素,默认的画刷是白色颜色由RGB值来指定RGB(Red,Green,Blue)0 x 00 FF FF FF B G R,12,绘图工具(2),库存画刷的类型,13,绘图工具(3),SelectStockObject的例子,pDC-SelectStockObject(BLACK_PEN);pDC-MoveT
6、o(10,100);pDC-LineTo(550,100);pDC-SelectStockObject(LTGRAY_BRUSH);pDC-Ellipse(50,50,150,150);pDC-SelectStockObject(DKGRAY_BRUSH);pDC-Ellipse(200,50,350,150);pDC-SelectStockObject(NULL_BRUSH);pDC-Rectangle(400,50,500,150);,14,自定义画笔(1),单步构造方法两步构造方法画笔风格是实线,宽度是5,颜色是蓝色,CPen NewPen(PS_SOLID,5,RGB(0,0,255)
7、;,CPen NewPen;NewPen.CreatePen(PS_SOLID,5,RGB(0,0,255);,15,自定义画笔(2),库存画笔的类型(除实线外,宽度为1),16,自定义画笔(3),自定义画笔的例子,CPen NewPen;CPen*pOldPen;NewPen.CreatePen(PS_SOLID,5,RGB(0,0,255);pOldPen=pDC-SelectObject(,17,自定义画笔(4),18,自定义画刷(1),实心(solid)风格CreateSolidBrush(COLORREF crColor);网格(hatched)风格CreateHatchBrush(
8、int nIndex,COLORREF crColor);模式(patterned)风格CreatePatternBrush(CBitmap*pBitmap);,19,自定义画刷(2),20,自定义画刷(3),自定义画刷的例子,CBrush NewBrush;CBrush*pOldBrush;NewBrush.CreateHatchBrush(HS_CROSS,RGB(0,0,255);pOldBrush=pDC-SelectObject(,21,自定义画刷(4),22,绘图函数(1),绘图函数的坐标是逻辑单位。默认的左上角坐标为(0,0),逻辑单位为像素绘图函数设置像素(SetPixel)、
9、当前位置(Moveto)、画直线(Lineto)、画弧线(Arc)、画矩形(Rectangle)、画椭圆(Ellipse)、画饼图(Pie)、画多边型(Polygon),23,绘图函数(2),圆角矩形弧线,pDC-Rectangle(100,100,300,200);pDC-MoveTo(200,150);pDC-LineTo(300,175);pDC-MoveTo(200,150);pDC-LineTo(125,100);pDC-Arc(100,100,300,200,300,175,125,100);,pDC-Rectangle(100,100,300,200);pDC-RoundRect
10、(100,100,300,200,50,40);,24,绘图函数(3),饼图多边形,pDC-Rectangle(100,100,300,200);pDC-Pie(100,100,300,200,300,100,100,100);,CPoint point4;point0.x=100;point0.y=100;point1.x=200;point1.y=200;point2.x=200;point2.y=100;point3.x=100;point3.y=200;pDC-Polygon(point,4);,25,绘图函数(4),用点线画矩形边框(DrawFocusRect)用画刷填充矩形,不画边
11、框(FillRect),pDC-DrawFocusRect(CRect(100,100,200,200);,CBrush NewBrush;NewBrush.CreateSolidBrush(RGB(0,0,255);pDC-SelectObject(,26,绘图函数(5),用画刷画矩形边框,不填充内部(FrameRect),CBrush NewBrush;CBrush*pOldBrush;NewBrush.CreateSolidBrush(RGB(0,0,255);pOldBrush=pDC-SelectObject(,27,绘图函数(6),在矩形区域中反显颜色(InvertRect),CP
12、en NewPen;CPen*pOldPen;NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255);pOldPen=pDC-SelectObject(,28,绘图模式(1),绘图模式指定画笔颜色和现有颜色的处理SetROP2(int nDrawMode)绘图模式R2_COPYPEN(画笔颜色)R2_NOT(画笔颜色取反)R2_XORPEN(显示颜色与画笔颜色异或),29,绘图模式(2),R2_NOT的例子蓝色(0 x00FF0000)反色为黄色(0 x0000FFFF)白色(0 x00FFFFFF)反色为黑色(0 x00000000)在CTestView:OnDra
13、w()中,CBrush NewBrush;CBrush*pOldBrush;NewBrush.CreateSolidBrush(RGB(0,0,255);pOldBrush=pDC-SelectObject(,30,绘图模式(3),在CTestView:OnLButtonDown()中,CDC*pDC=GetDC();CPen NewPen;CPen*pOldPen;NewPen.CreatePen(PS_SOLID,3,RGB(0,0,255);pOldPen=pDC-SelectObject(,31,绘图模式(4),32,绘图模式(5),R2_XORPEN的例子0 x00FF00000 x
14、00FF0000=0 x000000000 x00FFFFFF0 x00FF0000=0 x0000FFFF在CTestView:OnDraw()中,CBrush NewBrush;CBrush*pOldBrush;NewBrush.CreateSolidBrush(RGB(0,0,255);pOldBrush=pDC-SelectObject(,33,绘图模式(6),在CTestView:OnLButtonDown()中,CDC*pDC=GetDC();CPen NewPen;CPen*pOldPen;NewPen.CreatePen(PS_SOLID,3,RGB(0,0,255);pOld
15、Pen=pDC-SelectObject(,34,绘图模式(7),35,CRgn与区域(1),设置区域保证绘图时不超过给定范围MFC的CRgn封装区域,其成员函数有:CreateRectRgn、CreateEllipseRgn、CreatePolygonRgn等CombineRgn用于将新的区域合并CDC的FillClipRgn或PaintRgnyong填充区域,SelectClipRgn设置剪裁区域,SelectObject将区域选入设备文本,36,CRgn与区域(2),在CTestView:OnDraw()中,pDC-DrawFocusRect(CRect(10,10,200,200);C
16、Rgn rgn;rgn.CreateRectRgn(10,10,200,200);pDC-SelectObject(rgn);pDC-MoveTo(0,50);pDC-LineTo(300,50);pDC-MoveTo(50,0);pDC-LineTo(50,300);,37,CRgn与区域(3),38,映射模式(1),在视图窗口绘制图形时,给定的坐标为逻辑坐标,视图对象的实际坐标为设备坐标绘图函数的坐标是逻辑坐标,鼠标消息处理函数的坐标是设备坐标映射模式定义逻辑坐标与设备坐标单位的关系约束映射模式:比例因子固定非约束映射模式:由矩形区域推导出比例因子及轴向,39,映射模式(2),CDC的Se
17、tMapMode用于设置映射模式LPtoDP:逻辑坐标转为设备坐标DPtoLP:设备坐标转为逻辑坐标MM_TEXT:默认映射模式,每个单位映射为一个像素,X轴向右、Y轴向下MM_HIENGLISH:每个单位映射成0.001英寸,X轴向右、Y轴向上,40,映射模式(3),MM_TEXT与MM_HIENGLISH的区别,pDC-SetMapMode(MM_TEXT);CRect rect;GetClientRect(,41,文本处理(1),文本输出函数TextOut:在指定位置输出文本DrawText:在指定矩形区域输出文本ExtTextOut:在指定位置输出文本,并使用当前选择字体TabbedT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可视化编程 可视化 编程 PPT 课件
链接地址:https://www.31ppt.com/p-5480322.html