MFC简易绘图

CDrawView::CDrawView() { // TODO: add construction code here m_ptOrigin=0; m_ptOld=0; m_bDraw=FALSE; } void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default m_ptOrigin=point; m_ptOld=point; m_bDraw=TRUE; } void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default /* //用SDK平台的函数写的 //首先获取窗口的设备描述表 HDC hdc; hdc=::GetDC(m_hWnd); //移动到线条的起点 MoveToEx(hdc,point.x,point.y,NULL); //画线 LineTo(hdc,point.x,point.y); //释放DC ::ReleaseDC(m_hWnd,hdc); */ //用CDC类写的 /* CDC *pDC=GetDC(); pDC->MoveTo(m_ptOrigin); pDC->LineTo(point); ReleaseDC(pDC); */ //用CClientDC类写的 /* CClientDC dc(GetParent()); dc.MoveTo(m_ptOrigin); dc.LineTo(point); */ //用CWindowDC类写 /* CWindowDC dc(GetDesktopWindow()); dc.MoveTo(m_ptOrigin); dc.LineTo(point); */ /* CPen pen(PS_COSMETIC,1,RGB(255,56,0)); CClientDC dc(this); CPen *pOldPen=dc.SelectObject(&pen); dc.MoveTo(m_ptOrigin); dc.LineTo(point); dc.SelectObject(pOldPen); */ /* //创建红色画刷 CBrush brush(RGB(255,0,0)); //创建并获得DC CClientDC dc(this); //利用红色画刷填满一块矩形区域 dc.FillRect(CRect(m_ptOrigin,point),&brush); */ /* //创建位图对象 CBitmap bitmap; //加载位图资源 bitmap.LoadBitmap(IDB_BITMAP1); //创建位图画刷 CBrush brush(&bitmap); CClientDC dc(this); dc.FillRect(CRect(m_ptOrigin,point),&brush); */ /* CClientDC dc(this); dc.Rectangle(CRect(m_ptOrigin,point)); */ /* CClientDC dc(this); //获取透明画刷 CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); CBrush *pOldBrush=dc.SelectObject(pBrush); dc.Rectangle(CRect(m_ptOrigin,point)); dc.SelectObject(pOldBrush); */ //画连续线条 m_bDraw=FALSE; CView::OnLButtonUp(nFlags, point); } void CDrawView::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); dc.SetROP2(R2_NOTCOPYPEN); CPen pen(PS_SOLID,1,RGB(255,0,0)); CPen *pOldPen=dc.SelectObject(&pen); if(m_bDraw==TRUE) { dc.MoveTo(m_ptOrigin); dc.LineTo(point); //每次从鼠标当前位置向上一个位置连线 dc.LineTo(m_ptOld); //修改线段的起点 //注释掉修改起点的这句,就可以画出类似扇形的样子 //m_ptOrigin=point; m_ptOld=point; } dc.SelectObject(pOldPen); CView::OnMouseMove(nFlags, point); }

上面是部分代码

上面定义了三个Ciew类的对象,其中两个CPoint对象 m_ptOrign保存鼠标左键按下时的坐标,m_ptOld保存鼠标左键起来时的坐标。另外一个m_bDraw是BOOL变量,用来作为左键是否按下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值