实验四MFC图形绘制编程实验

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

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

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

资源描述

实验四MFC图形绘制编程实验一、实验目的(1)熟悉VisualC++6.0开发环境;(2)掌握MFC消息映射的操作步骤;(2)掌握MFC图形输出的方法;(3)理解设备环境、画笔、画刷的概念,掌握常用的绘图函数。二、实验内容请编写程序,要求如下:(1)定义一支黄色画笔,绘制一条线段;(1)定义一支紫色画笔,绘制一条多段线;(3)定义一支红色画笔,绘制一个正方形,并用适当的画刷填充图形内部;(4)定义一支绿色画笔,绘制一个圆,并用适当的画刷填充图形内部;(5)定义一支蓝色画笔,绘制一个正六边形,并用适当的画刷填充图形内部。三、实验报告1.列出图形绘制程序代码清单:(1)在头文件Demo.h中:#includeafxwin.hclassCDemoWnd:publicCFrameWnd{public:CDemoWnd();~CDemoWnd();public:LRESULTOnPaint(WPARAMwParam,LPARAMlParam);DECLARE_MESSAGE_MAP()public:intm_nX0;intm_nY0;intm_nX1;intm_nY1;};classCDemoApp:publicCWinApp{public:BOOLInitInstance();};CDemoAppThisApp;(2)在源文件Demo.cpp中:#includetpd1.hCDemoWnd::CDemoWnd(){m_nX0=0;m_nY0=0;m_nX1=0;m_nY1=0;}CDemoWnd::~CDemoWnd(){}BEGIN_MESSAGE_MAP(CDemoWnd,CFrameWnd)ON_MESSAGE(WM_PAINT,OnPaint)END_MESSAGE_MAP()LRESULTCDemoWnd::OnPaint(WPARAMwParam,LPARAMlParam){CPaintDCdc(this);CPenPen1,*pOldPen1;Pen1.CreatePen(PS_SOLID,10,RGB(255,255,0));pOldPen1=dc.SelectObject(&Pen1);dc.SelectObject(&Pen1);dc.MoveTo(10,10);dc.LineTo(100,100);CPenPen2,*pOldPen2;Pen2.CreatePen(PS_SOLID,4,RGB(255,0,255));pOldPen2=dc.SelectObject(&Pen2);dc.SelectObject(&Pen2);POINTpt1[]={{100,10},{10,180},{200,150}};dc.Polyline(pt1,3);CPenPen3,*pOldPen3;dc.SelectStockObject(BLACK_BRUSH);Pen3.CreatePen(PS_SOLID,4,RGB(255,0,0));pOldPen3=dc.SelectObject(&Pen3);dc.SelectObject(&Pen3);dc.Rectangle(300,50,400,150);CPenPen4,*pOldPen4;dc.SelectStockObject(GRAY_BRUSH);Pen4.CreatePen(PS_SOLID,4,RGB(0,255,0));pOldPen4=dc.SelectObject(&Pen4);dc.SelectObject(&Pen4);dc.Ellipse(500,200,700,400);CPenPen5,*pOldPen5;Pen5.CreatePen(PS_SOLID,4,RGB(0,0,255));pOldPen5=dc.SelectObject(&Pen5);dc.SelectStockObject(DKGRAY_BRUSH);dc.SelectObject(&Pen5);POINTpt2[]={{250,250},{400,250},{475,379},{400,509},{250,509},{175,379}};dc.Polygon(pt2,6);return0;}BOOLCDemoApp::InitInstance(){CDemoWnd*pMainWnd=newCDemoWnd();pMainWnd-Create(NULL,DemoMini-MFC);pMainWnd-ShowWindow(m_nCmdShow);pMainWnd-UpdateWindow();m_pMainWnd=pMainWnd;returnTRUE;}2、程序运行结果:3、总结在MFC程序中绘制图形的基本操作步骤:(1)获取图形设备接口。图形设备接口(GDI)负责系统与用户或绘图程序之间的信息交换,并控制在输出设备上显示图形或文字,是Windows系统的重要组成部分。(2)获取设备环境。设备描述表用来定义绘图规则,设备描述表即为设备环境的属性的集合,可以将设备描述表看成图形的“输出模板”。应用程序每一次图形操作均参照设备描述表中的属性执行。获取设备环境是应用程序输出图形的先决条件,常用的两个MFC类是CPaintDC,CClientDC。CPaintDC类应用程序响应WM_PAINT消息进行图形刷新时,主要通过CPaintDC类对象获取设备环境。CClientDC如果绘图工作并非由WM_PAINT消息驱动,则使用CClientDC类的对象获取设备环境。(3)选择绘图工具与颜色。画笔的操作:创建画笔,将画笔选入设备环境,删除画笔。画刷的创建与应用也包括创建、选入设备环境和删除。最后设置颜色。(4)选择绘图函数进行绘图。设置画笔当前位置的函数;从当前位置向指定坐标点画直线的函数;从当前位置开始,依次用线段连接lpPoints中指定的各点;绘制矩形,并用当前画刷进行填充;绘制椭圆,并用当前画刷填充;绘制多边形,并用当前画刷填充。#includetpd3.hCDemoWnd::CDemoWnd(){m_nX0=0;m_nY0=0;m_nX1=0;m_nY1=0;}CDemoWnd::~CDemoWnd(){}BEGIN_MESSAGE_MAP(CDemoWnd,CFrameWnd)ON_MESSAGE(WM_PAINT,OnPaint)END_MESSAGE_MAP()LRESULTCDemoWnd::OnPaint(WPARAMwParam,LPARAMlParam){CPaintDCdc(this);CPenPen1,*pOldPen1;Pen1.CreatePen(PS_SOLID,10,RGB(255,255,0));pOldPen1=dc.SelectObject(&Pen1);dc.SelectObject(&Pen1);dc.MoveTo(50,10);dc.LineTo(50,210);CPenPen2,*pOldPen2;Pen2.CreatePen(PS_SOLID,4,RGB(255,0,255));pOldPen2=dc.SelectObject(&Pen2);dc.SelectObject(&Pen2);POINTpt1[]={{300,10},{100,150},{200,50},{350,10}};dc.Polyline(pt1,3);CPenPen3,*pOldPen3;dc.SelectStockObject(BLACK_BRUSH);Pen3.CreatePen(PS_SOLID,4,RGB(255,0,0));pOldPen3=dc.SelectObject(&Pen3);dc.SelectObject(&Pen3);dc.Rectangle(400,50,500,150);CPenPen4,*pOldPen4;dc.SelectStockObject(GRAY_BRUSH);Pen4.CreatePen(PS_SOLID,4,RGB(0,255,0));pOldPen4=dc.SelectObject(&Pen4);dc.SelectObject(&Pen4);dc.Ellipse(700,50,900,250);CPenPen5,*pOldPen5;Pen5.CreatePen(PS_SOLID,4,RGB(0,0,255));pOldPen5=dc.SelectObject(&Pen5);dc.SelectStockObject(DKGRAY_BRUSH);dc.SelectObject(&Pen5);POINTpt2[]={{150,200},{300,200},{375,329},{300,459},{150,459},{75,329}};dc.Polygon(pt2,6);return0;}BOOLCDemoApp::InitInstance(){CDemoWnd*pMainWnd=newCDemoWnd();pMainWnd-Create(NULL,DemoMini-MFC);pMainWnd-ShowWindow(m_nCmdShow);pMainWnd-UpdateWindow();m_pMainWnd=pMainWnd;returnTRUE;}

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

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

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

×
保存成功