当前位置:文档之家› VC++实验四 MFC图形绘制编程实验

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

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

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

一、实验目的

(1) 熟悉Visual C++ 6.0开发环境;

(2) 掌握MFC消息映射的操作步骤;

(2) 掌握MFC图形输出的方法;

(3) 理解设备环境、画笔、画刷的概念,掌握常用的绘图函数。

二、实验内容

请编写程序,要求如下:

(1) 定义一支黄色画笔,绘制一条线段;

(1) 定义一支紫色画笔,绘制一条多段线;

(3) 定义一支红色画笔,绘制一个正方形,并用适当的画刷填充图形内部;

(4) 定义一支绿色画笔,绘制一个圆,并用适当的画刷填充图形内部;

(5) 定义一支蓝色画笔,绘制一个正六边形,并用适当的画刷填充图形内部。

三、实验报告

1.列出图形绘制程序代码清单:

(1)在头文件Demo.h中:

#include "afxwin.h"

class CDemoWnd:public CFrameWnd

{

public:

CDemoWnd();

~CDemoWnd();

public:

LRESULT OnPaint(WPARAM wParam,LPARAM lParam);

DECLARE_MESSAGE_MAP()

public:

int m_nX0;

int m_nY0;

int m_nX1;

int m_nY1;

};

class CDemoApp:public CWinApp

{

public:

BOOL InitInstance();

};

CDemoApp ThisApp;

(2)在源文件Demo.cpp中:

#include "Demo.h"

CDemoWnd::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()

LRESULT CDemoWnd::OnPaint(WPARAM wParam,LPARAM lParam) {

CPaintDC dc(this);

CPen Pen1,*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);

CPen Pen2,*pOldPen2;

Pen2.CreatePen(PS_SOLID,4,RGB(255,0,255));

pOldPen2=dc.SelectObject(&Pen2);

dc.SelectObject(&Pen2);

POINT pt1[]={{100,10},{10,180},{200,150}};

dc.Polyline(pt1,3);

CPen Pen3,*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);

CPen Pen4,*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);

CPen Pen5,*pOldPen5;

Pen5.CreatePen(PS_SOLID,4,RGB(0,0,255));

pOldPen5=dc.SelectObject(&Pen5);

dc.SelectStockObject(DKGRAY_BRUSH);

dc.SelectObject(&Pen5);

POINT pt2[]={{250,250},{400,250},{475,379},{400,509},{250,509},{175,379}};

dc.Polygon(pt2,6);

return 0;

}

BOOL CDemoApp::InitInstance()

{

CDemoWnd *pMainWnd = new CDemoWnd();

pMainWnd->Create(NULL,"Demo Mini-MFC");

pMainWnd->ShowWindow(m_nCmdShow);

pMainWnd->UpdateWindow();

m_pMainWnd = pMainWnd;

return TRUE;

}

2、程序运行结果:

3、总结在MFC 程序中绘制图形的基本操作步骤:

(1)获取图形设备接口。图形设备接口(GDI)负责系统与用户或绘图程序之间的信息交换,并控制在输出设备上显示图形或文字,是Windows 系统的重要组成部分。

(2)获取设备环境。设备描述表用来定义绘图规则,设备描述表即为设备环境的属性的集合,可以将设备描述表看成图形的“输出模板”。应用程序每一次图形操作均参照设备描述表中的属性执行。获取设备环境是应用程序输出图形的先决条件,常用的两个MFC 类是CPaintDC ,CClientDC。CPaintDC 类应用程序响应WM_PAINT 消息进行图形刷新时,主要通过CPaintDC 类对象获取设备环境。CClientDC如果绘图工作并非由WM_PAINT 消息

驱动,则使用CClientDC 类的对象获取设备环境。

(3)选择绘图工具与颜色。画笔的操作:创建画笔,将画笔选入设备环境,删除画笔。画刷的创建与应用也包括创建、选入设备环境和删除。最后设置颜色。

(4)选择绘图函数进行绘图。设置画笔当前位置的函数;从当前位置向指定坐标点画直线的函数;从当前位置开始,依次用线段连接lpPoints 中指定的各点;绘制矩形,并用当前画刷进行填充;绘制椭圆,并用当前画刷填充;绘制多边形,并用当前画刷填充。

相关主题
文本预览
相关文档 最新文档