`
Tveiker
  • 浏览: 54562 次
  • 性别: 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绘图的同学指明一条道路。

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

    (3) CSzie类:存放矩形的宽度和高度的坐标(cx,cy),其中cx为矩形的宽度,cy为矩形的高度 (1) CBitmap:封装了一个GDI位图,提供位图操

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

    简单的MFC入门绘图程序,可以实现Window环境下自带绘图软件的一些基本功能,帮助大家学习、入门MFC

    基于MFC的绘图操作

    基于MFC的绘图操作,自己写的,可以作为课程设计的参考程序

    mfc绘图小软件-mfc作业

    刚学mfc,老师留了个作业,做个小的绘图软件。 我觉得最大问题是重绘,还有点bug,不过基本可以的。 重绘时能重画原来图像,但最大化时重绘就错了。应该是内存dc创建的问题。 有待改进,望指点!

    MFC实现绘图功能,绘图不会被擦除

    MFC实现基本的绘图功能,点,线,矩形,绘出的图线条不会随屏幕改变而被擦除

    MFC绘图教程大全

    可以进行简单的基于MFC 的图形界面编程的图形界面编程可以进行简单的基于 理解Windows 编程的基本概念。编程的基本概念。理解编程的基本概念鉴于教学 时间进度限制, 鉴于教学时间进度限制,更复杂的应用程序开发...

    MFC绘图的基本知识

    主要讲解MFC里面的基本绘图的知识

    MFC实现简易绘图软件

    使用MFC实现简易的绘图软件,基本上是使用鼠标拖动来绘制的图形,有直线,连续直线,矩形,圆,模拟曲线,多边形,圆弧 --------------------- 本文来自 辣条不爱辣 的CSDN 博客 ,全文地址请点击:...

    MFC绘图示例

    应用程序向导已为您创建了此 MFC绘图示例 应用程序。此应用程序 不仅介绍了使用 Microsoft 基础类的基本知识, 而且是编写应用程序的起点。

    MFC简单绘图实现代码

    非常适合初学者的学习。 讲述了MFC绘图最基本的一些方法: 用SDK全局函数实现绘制线条,用类,类,CWindowDC类分别,以及画刷,位图画刷,透明画刷的使用方法。

    基于MFC的OpenGL绘图

    一、简介 二、MFC中的OpenGL基本框架  三、画图实例 四.小结 欢迎多多下哦~~

    mfc实现小型绘图软件

    利用vc6.0中mfc实现绘制矩形圆形,裁剪,橡皮,画笔,填充等一些功能,是计算机图形学课程设计的内容,适合新手观看,可以直接使用可以在其中添加内容,有注解,实现了一些小型绘图软件的一些基本的功能

    OpenGL.rar_MFC OpenGL绘图_mfc 实现document_opengl mfc 直线_opengl 绘图

    创建一个基于MFC 的Single Document 应用程序,利用OpenGL 进行图形的绘制: 1.实现OpenGL 绘图环境和Windows 绘图...2.利用OpenGL 绘图函数进行一些基本图形如直线、多边形的绘制。 3.利用OpenGL 设置图形的颜色。

    MFC GDI绘图基础

    关于GDI的基本概念 什么是GDI? Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上。 在Windows操作系统中,动态链接库C:/WINDOWS/system32/gdi32.dll(GDI...

    vc++6 MFC金刚石

    MFC基本绘图函数绘制蓝色直线段构成图案

    使用MFC绘图板 基本功能都有

    使用MFC来实现绘图板! 包括图元的各种画法实现,还有颜色,字体的改变。当然还有保存和打开的功能。重绘也有哦

    MFC绘图程序

    本程序通过MFC实现了绘图的基本功能,用双缓冲技术,橡皮筋技术,可以Bmp,jpg,gif等格式保存图片,功能齐全

Global site tag (gtag.js) - Google Analytics