画图程序 橡皮线技术二(拖拽显示)

在学习了画图(橡皮线技术一后),感觉拖拽画线不能加入颜色和线宽信息看起来不直观,而我们在Windows画图程序中不是那样的。为了在画图拖拽时能够显示选中的颜色和线宽。对于上一课的代码还需要改进一下。

以下一些变量以及其它的设置不再详细列出来了,可以参考上一课。

核心代码:

void CGraphicView::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 
 CClientDC dc(this);
 COLORREF XorColor=dc.GetBkColor() ^ m_PenColor;  //关键代码
 CPen pen(PS_SOLID,m_nLineWidth,XorColor);
 int oldmode=dc.GetROP2();
 CPen *oldpen=dc.SelectObject(&pen);
 dc.SetROP2(R2_XORPEN);      //绘图模式
 dc.SelectStockObject(NULL_BRUSH);
 
 if(m_bLButton)   //判断左键状态
 {
  switch(m_nDrawType)     //绘图方式选择
  {
  case IDM_LINE:
   dc.MoveTo(m_ptOrigin);
   dc.LineTo(m_ptEnd);
   m_ptEnd=point;
   dc.MoveTo(m_ptOrigin);
   dc.LineTo(m_ptEnd);
   break;
  case IDM_Rectangle:
   dc.Rectangle(CRect(m_ptOrigin,m_ptEnd));
   m_ptEnd=point;
   dc.Rectangle(CRect(m_ptOrigin,m_ptEnd));
   break;
  case IDM_Ellipse:
   dc.Ellipse(CRect(m_ptOrigin,m_ptEnd));
   m_ptEnd=point;
   dc.Ellipse(CRect(m_ptOrigin,m_ptEnd));
   break;
  }
 }
 dc.SelectObject(oldpen);
 pen.DeleteObject();
 dc.SetROP2(oldmode);
 CView::OnMouseMove(nFlags, point);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值