首页 > 代码库 > 鼠标绘制简单图形

鼠标绘制简单图形

功能:

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);
}

 

鼠标绘制简单图形