一、 实验目的:
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);
}
结果截图:
分享到:
相关推荐
这是一个比较基础的绘图制作,提供源代码,可为初学MFC绘图的同学指明一条道路。
(3) CSzie类:存放矩形的宽度和高度的坐标(cx,cy),其中cx为矩形的宽度,cy为矩形的高度 (1) CBitmap:封装了一个GDI位图,提供位图操
简单的MFC入门绘图程序,可以实现Window环境下自带绘图软件的一些基本功能,帮助大家学习、入门MFC
基于MFC的绘图操作,自己写的,可以作为课程设计的参考程序
刚学mfc,老师留了个作业,做个小的绘图软件。 我觉得最大问题是重绘,还有点bug,不过基本可以的。 重绘时能重画原来图像,但最大化时重绘就错了。应该是内存dc创建的问题。 有待改进,望指点!
MFC实现基本的绘图功能,点,线,矩形,绘出的图线条不会随屏幕改变而被擦除
可以进行简单的基于MFC 的图形界面编程的图形界面编程可以进行简单的基于 理解Windows 编程的基本概念。编程的基本概念。理解编程的基本概念鉴于教学 时间进度限制, 鉴于教学时间进度限制,更复杂的应用程序开发...
主要讲解MFC里面的基本绘图的知识
使用MFC实现简易的绘图软件,基本上是使用鼠标拖动来绘制的图形,有直线,连续直线,矩形,圆,模拟曲线,多边形,圆弧 --------------------- 本文来自 辣条不爱辣 的CSDN 博客 ,全文地址请点击:...
应用程序向导已为您创建了此 MFC绘图示例 应用程序。此应用程序 不仅介绍了使用 Microsoft 基础类的基本知识, 而且是编写应用程序的起点。
非常适合初学者的学习。 讲述了MFC绘图最基本的一些方法: 用SDK全局函数实现绘制线条,用类,类,CWindowDC类分别,以及画刷,位图画刷,透明画刷的使用方法。
一、简介 二、MFC中的OpenGL基本框架 三、画图实例 四.小结 欢迎多多下哦~~
利用vc6.0中mfc实现绘制矩形圆形,裁剪,橡皮,画笔,填充等一些功能,是计算机图形学课程设计的内容,适合新手观看,可以直接使用可以在其中添加内容,有注解,实现了一些小型绘图软件的一些基本的功能
创建一个基于MFC 的Single Document 应用程序,利用OpenGL 进行图形的绘制: 1.实现OpenGL 绘图环境和Windows 绘图...2.利用OpenGL 绘图函数进行一些基本图形如直线、多边形的绘制。 3.利用OpenGL 设置图形的颜色。
关于GDI的基本概念 什么是GDI? Windows绘图的实质就是利用Windows提供的图形设备接口GDI(Graphics Device Interface)将图形绘制在显示器上。 在Windows操作系统中,动态链接库C:/WINDOWS/system32/gdi32.dll(GDI...
MFC基本绘图函数绘制蓝色直线段构成图案
使用MFC来实现绘图板! 包括图元的各种画法实现,还有颜色,字体的改变。当然还有保存和打开的功能。重绘也有哦
本程序通过MFC实现了绘图的基本功能,用双缓冲技术,橡皮筋技术,可以Bmp,jpg,gif等格式保存图片,功能齐全