首页 > 代码库 > 鼠标绘制简单图形
鼠标绘制简单图形
功能:
1、绘制的图形包括直线、椭圆和矩形,通过菜单对绘制的图形切换
2、在视图中使用鼠标动态的绘制图形
分析:
当窗口尺寸发生变化时,引起窗口重绘,会发送WM_PAINT消息,这时首先会擦除窗口的背景,然后再进行重绘操作,这样就把窗口中先前绘制的图形擦除掉了;可以将绘制图形的三要素(起点、终点、绘制类型)保存下来,在窗口重绘调用程序视图类窗口的OnDraw函数中再将图形根据保存的三要素重新输出;
1、数据
在视图中添加两个点坐标
CPoint m_ptOrigin; //起点坐标
CPoint m_ptEnd; //终点坐标
UINT m_nDrawType; //图形的类型,0:不绘制;1:直线;2:椭圆;3:矩形;
BOOL m_bFlag; //是否绘制图形
2、绘制过程
2.1--LBUTTONDOWN
1)保存图形的起点
2)m_bFlag=TRUE; //开始绘制
2.2--MOUSEMOVE
if(m_bFlag){
//擦除旧线
//画新线
}
2.3--LBUTTONUP
m_bFlag=FALSE; //绘制结束
实现:
创建单文档类型的MFC工程:Graphic,在资源窗口中的菜单栏中添加顶层菜单项“绘图”,并添加下拉菜单项:IDM_DOT(点)、IDM_LINE(直线)、IDM_RECTANGLE(矩形)、IDM_ELLIPSE(椭圆);在工程的视图类CGraphicView类中添加私有成员变量:UINT m_nDrawType,并在视图类的构造函数中将其初始化为0,在不同的菜单项的消息响应函数中将m_nDrawType设为不同的值以标识不同的绘制图形:点--1、直线--2、矩形--3、椭圆--4;
在视图类CGraphicView类中添加私有成员变量:CPoint m_ptOrigin,并在视图类的构造函数中将该变量初始化为0,在鼠标左键按下的消息响应函数中用以保存左键按下时的坐标;
void CGraphicView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default m_ptOrigin=point; CView::OnLButtonDown(nFlags, point); }
鼠标绘制简单图形