zoukankan      html  css  js  c++  java
  • VC++学习/MFC (2)

      搞懂了书上所讲的简单绘图的程序,现在看的关于文本编程就轻松多了。

      先回顾一下,要在做一个可以画直线的程序,主要做的就是两点,一个是LBUTTONDOWN(鼠标左键按下的响应函数)和LBUTTONUP(鼠标左键抬起的响应函数),然后记录一下Origin点和现在的最后的point点就可可以了。

      单纯画直线有很多中方法:

      首先是在LBUTTONDOWN中记录下m_ptOrigin点:

    1 void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) 
    2 {
    3     // TODO: Add your message handler code here and/or call default
    4     m_ptOrigin=point;
    5     m_bdraw=TRUE;
    6     CView::OnLButtonDown(nFlags, point);
    7 }

      然后就可以在LBUTTUONUP中操作了,有多重方法:

      (1)

    1     HDC hdc;
    2     hdc = ::GetDC(m_hWnd);
    3     MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
    4     LineTo(hdc,point.x,point.y);
    5     ::ReleaseDC(m_hWnd,hdc);

      (2)

    1     CDC* pDC=GetDC();
    2     pDC->MoveTo(m_ptOrigin);
    3     pDC->LineTo(point);
    4     ReleaseDC(pDC);

      (3)

    1     CClientDC dc(this);
    2     dc.MoveTo(m_ptOrigin);
    3     dc.LineTo(point);

      另外,CClientDC dc(this)后可以用dc.FillRect(m_ptOrigin,point)来画矩形。

    要想画连续线条就得先定义BOOL型的私有成员变量m_bDraw;在鼠标按下去的时候改值为真,鼠标左键弹起时为假:

      

     1 void CDrawView::OnMouseMove(UINT nFlags, CPoint point) 
     2 {
     3     // TODO: Add your message handler code here and/or call default
     4     CClientDC dc(this);
     5     if(m_bdraw==TRUE)
     6     {
     7         dc.MoveTo(m_ptOrigin);
     8         dc.LineTo(point);
     9         m_ptOrigin=point;        //    修改线段的起点
    10     }
    11     CView::OnMouseMove(nFlags, point);
    12 }

      

      

      

  • 相关阅读:
    09 python初学 (字符串)
    08 python 初学(字典)
    07 Python初学(元组)
    ubuntu 学习
    10 python 初学(Python 的编码解码)
    12 python 初学(深浅拷贝、集合)
    11 python初学 (文件)
    ubuntu 在 Windows 下的安装
    mysql常用命令总结
    关于Windows 7 下临时IPV6地址的问题,如何禁用它
  • 原文地址:https://www.cnblogs.com/shenshuyang/p/2980162.html
Copyright © 2011-2022 走看看