`
Tveiker
  • 浏览: 55799 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

MFC基本绘图

    博客分类:
  • MFC
阅读更多
一、 实验目的:
1、 了解vc 6.0开发工具
2、 了解并学会使用绘图函数
3、 了解并学会使用画刷
4、 学会添加消息响应
二、 实验内容:
1、 画直线,椭圆、矩形
首先添加左键按下消息响应WM_LBUTTONDOWN,当按下左键,在窗口客户区画出椭圆和矩形。同时画出自己控制的直线。画一条直线只需有由两点确定。鼠标左键按下时一个键和弹起时的点。
故先添加两个点作为来存储这两个点,以及一个boolen变量以确定左键是否按下
代码如下:
响应WM_LBUTTONDOWN
void CGraphicView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	m_bLbuttonDown = TRUE;    //标记是否按下左键
	//Invalidate();			  //重画函数
	if(m_bLbuttonDown)
	{  
		CDC *pDC=GetDC();
		CBrush *pnew = CBrush::FromHandle((HBRUSH)GetStockObject(HOLLOW_BRUSH));//创建空话刷,以便在矩形和
		                                                                   //椭圆区域重绘时保留直线
		CBrush *pold = pDC->SelectObject(pnew); //选择新画刷                               
		CRect rect;
		GetClientRect(&rect);               //获得客户区的位置放在rect中
		pDC->Ellipse(&rect);				//画一个充满整个客户区的椭圆
		pDC->Rectangle(100,100,200,200);	//画一矩形
		pDC->SelectObject(pold);           //选绘画刷
	}
	m_OldPoint = point;//存储左键按下时的点
	CView::OnLButtonDown(nFlags, point);
}

响应WM_LBUTTONUP
void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	//
	//当左键弹起时画线
	CDC *pDC=GetDC();
	pDC->MoveTo(m_OldPoint);
	pDC->LineTo(point);
	CView::OnLButtonUp(nFlags, point);
}


程序结果截图:


2、 画出鼠标左键在按下时所进过的曲线
首先,添加鼠标左键按下和弹起的消息响应,然后添加鼠标移动的消息响应。
添加2个BOOL型的值。m_buttondown判断左键是否按下,m_buttonup判断左键是否弹起。还添加一个按下时的点downpoint。
将这些变量在构造函数中初始化
CEx53View::CEx53View()
{
	// TODO: add construction code here
	m_buttondown = FALSE;
	m_buttonup = FALSE;
	m_downpoint = 0;
}
三个消息响应函数如下,语句解释在其中
void CEx53View::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	m_buttondown = TRUE;     //标志左键按下
	m_downpoint = point;     //保存当前点
	CView::OnLButtonDown(nFlags, point);
}
void CEx53View::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	m_buttonup = TRUE;   //左键弹起
	m_buttondown = FALSE;//将按下的标志设为FALSE
	CView::OnLButtonUp(nFlags, point);
}
void CEx53View::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	//曲线其实就是很小一段段直线组成
	if(m_buttondown)//左键是否按下
	{
		CDC *pDC = GetDC();
		CPen NewPen;
        NewPen.CreatePen(PS_SOLID,3,RGB(255,0,0));//创建新画笔红色的
        CPen*  pOldPen;
        pOldPen=pDC->SelectObject(&NewPen); //将新画笔选入设备环境 
		pDC->MoveTo(m_downpoint);
		pDC->LineTo(point);
		m_downpoint = point;  //将此时的点设为起点
		pDC->SelectObject(pOldPen); // 恢复设备环境中原来的画笔
       NewPen.DeleteObject();		
	}
	CView::OnMouseMove(nFlags, point);
}


运行结果:


3、 为椭圆填充十字形。
void CEx54View::OnLButtonDown(UINT nFlags, CPoint point) 
{// TODO: Add your message handler code here and/or call default
CDC *pDC=GetDC();
CBrush newbrush(HS_CROSS,RGB(0,255,255));//创建一个新画刷绿色十字形
CBrush *poldbrush;
poldbrush=pDC->SelectObject(&newbrush);//将新画刷选入设备环境
CRect rect;
GetClientRect(&rect);
pDC->Ellipse(&rect);//用新画刷画椭圆
	pDC->SelectObject(poldbrush);//恢复旧画刷	
CView::OnLButtonDown(nFlags, point);
}


结果截图:

1
0
分享到:
评论

相关推荐

    MFC基本绘图 源代码

    这个“MFC基本绘图 源代码”是一个针对初学者的教程资源,它包含了一组源代码,帮助学习者理解如何在MFC环境中进行图形绘制。 在MFC中,绘图主要通过CDC(Device Context)类来实现。CDC类提供了各种图形绘制函数,...

    【计算机图形学课程】01.MFC基本绘图函数使用方法1

    本文将探讨MFC基本的绘图函数和相关类的使用方法,以帮助初学者理解计算机图形学编程。 首先,我们要了解MFC中的几个关键类,它们是进行图形绘制的基础: 1. CDC类(Device Context):CDC类是图形设备接口的抽象...

    MFC简易绘图软件,可自行扩充功能

    1. **MFC基本架构**:了解MFC中的主要类以及它们如何协同工作,如应用程序生命周期管理、窗口创建和消息处理机制。 2. **GDI绘图**:学习如何使用GDI或GDI+进行基本的图形绘制,如直线、曲线、矩形、椭圆等。 3. *...

    基于mfc的绘图

    在本文中,我们将深入探讨如何在Microsoft Foundation Class (MFC) 框架下实现基于对话框的绘图功能。MFC 是一个 C++ 类库,它为开发...在实际项目中,你可以根据需求扩展这个基本框架,添加更多的绘图工具和交互功能。

    MFC绘图 简单绘图

    现在,你已经具备了创建一个基本的MFC绘图程序的能力,可以实现划线和画矩形。但请注意,如果需要更复杂的图形操作,如填充、旋转、缩放等,你可能需要使用更高级的图形库,如GDI+或Direct2D。同时,为了实现图像的...

    基于MFC的绘图程序

    MFC包含了一系列的类,如CWinApp、CWnd、CButton等,分别对应于应用程序、窗口、按钮等基本元素。 2. **绘图API** 在MFC中,绘图主要通过CDC(Device Context)类来实现。CDC是对设备上下文的封装,可以理解为一个...

    MFC入门绘图程序,可以实现Window环境下自带绘图软件的一些基本功能

    这个入门级别的MFC绘图程序旨在让初学者了解如何利用MFC来实现类似Windows自带画图软件的基本功能。下面将详细阐述MFC绘图程序的相关知识点。 1. **MFC概述**: MFC是微软开发的一个C++库,它是对Windows API的...

    基于MFC的绘图操作

    除了基本图形,MFC还支持更复杂的绘图操作,如路径绘图。你可以使用BeginPath()开始一个新的路径,AddArc()、AddLine()和AddPolygon()等方法添加路径元素,最后用EndPath()结束路径。然后,通过SelectObject()选择...

    用MFC如何高效地绘图.rar_MFC_MFC 绘图_MFC如何绘图_绘图

    MFC的CView类是窗口视图的基本类,它是实现绘图的主要平台。在MFC中,绘图通常在OnDraw函数中完成,这个函数会在视图需要重绘时被调用。我们可以通过继承CView并覆盖OnDraw函数来实现自定义的绘图逻辑。 1. **绘图...

    MFC关于绘图教程

    在MFC(Microsoft Foundation Classes)框架下进行绘图操作,主要涉及到对图形元素如点、线、矩形等的基本操作。以下将详细介绍MFC中用于绘图的基础结构体与类,以及如何利用它们来实现基本的图形绘制,例如绘制直线...

    MFC简易绘图程序 学习借鉴

    在这个“MFC简易绘图程序”中,我们主要探讨的是如何利用MFC来实现基本的图形绘制功能。 MFC中的绘图通常涉及到CWnd类及其派生类,如CView或CDC。在MFC应用中,CView是负责显示数据和处理用户输入的主要窗口部件,...

    MFC绘图教程大全

    在MFC中进行绘图主要涉及到了解Windows编程的基本概念,尤其是关于图形用户界面(GUI)的编程。 **教学目标** 1. **理解Windows编程的基本概念**:这包括了解Windows操作系统的工作原理、Windows消息循环机制、窗口...

    MFC绘图相关程序实例

    1. 基本图形绘制:创建一个CView派生类,重写OnDraw()函数,用CDC对象绘制直线、曲线、圆形等基本图形,展示基本绘图API的使用。 2. 动态绘图:实现一个定时器,每隔一段时间调用OnDraw(),更新界面显示,比如动态...

    MFC实时绘图程序

    首先,我们要理解MFC的基本概念。MFC封装了Windows API,提供了面向对象的接口,包括窗口、对话框、控件、文档、视图等组件,使得开发者能够更专注于业务逻辑而不是底层细节。在这个实时绘图程序中,我们可能会看到`...

    VS2012+MFC入门经典+利用MFC编写绘图器

    在这个案例中,我们将深入探讨如何使用**Visual Studio 2017**作为集成开发环境(IDE),结合MFC来构建一个基本的绘图器。 **VS2017与MFC**:Visual Studio 2017支持MFC项目,并提供了丰富的工具和向导来帮助开发者...

    基于MFC的动态绘图

    在编程领域,MFC...总的来说,基于MFC的动态绘图技术涉及到MFC框架的基本组件使用,以及图形绘制和用户交互处理的技巧。通过熟练掌握这些知识,开发者可以创建出具有丰富视觉反馈和交互性的Windows应用程序。

    MFC画图板绘图并保存图片导出

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来创建一个功能丰富的画图应用程序。...这个过程涵盖了MFC的基本使用、GDI绘图以及文件操作等多个方面,是学习MFC编程的典型应用场景。

    基于MFC绘图板设计

    这个绘图板项目是作为期末课程设计的一部分,旨在让学生掌握MFC的基本用法以及实现图形用户界面(GUI)设计的能力。 首先,我们要理解MFC的基本概念。MFC封装了Windows API,将许多复杂的Windows编程接口转化为更易...

    MFC简单绘图源代码

    这个简单的MFC绘图程序应该涵盖了上述的一些基本概念和操作,通过学习和分析源代码,初学者可以理解如何在MFC环境中使用GDI进行图形绘制。同时,这也是对C++面向对象编程、Windows编程和MFC框架的一次实践锻炼。

Global site tag (gtag.js) - Google Analytics