如何在VC6.0中用GDI+画橡皮线?--跪求

christinavivi 2008-07-10 12:01:41
我最近在做GIS底层开发,用VC6.0工具,导师要我用GDI+改写GDI,可在画橡皮线时出现了问题.我是刚接触GDI+,从网上了解到不能用SetROP2(),所以该怎摸办?而且我的GDI+库不支持DrawReversibleLine方法,所以急求各位高手帮助!!谢谢!


画橡皮线我响应了两个事件,一个在OnLButtonDown。另一个在OnMouseMove中
void CShpviewView::OnLButtonDown(UINT nFlags, CPoint point)
{
else if(m_DrawType == 2 || m_DrawType == 3) //绘制连续直线和面
{
if(m_PushNum == 0)
{
SetCapture(); //捕捉鼠标
m_PointOrign = point; //原点等于点中点
m_PointOld = point; //将前一个点设为点中点的坐标
}//如果是第一次按下左鼠标键
else
{
m_PointOrign = m_PointOld; //将上一个点设为原点
m_PointOld = point; //将点中点设为原点
}//二次以上按下鼠标左键时

m_PushNum++; //记录按下点的数目
}

void CShpviewView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default

if((m_DrawType == 2 || m_DrawType == 3 ) && m_PushNum >= 1) //绘制连续直线和面
{
CClientDC dc(this); //要改成GDI+
dc.SetROP2(R2_NOT);
dc.SelectStockObject(HOLLOW_BRUSH);

dc.MoveTo(m_PointOrign); //擦除原来的直线 画橡皮线
dc.LineTo(m_PointOld);
dc.MoveTo(m_PointOrign); //画现在的直线
dc.LineTo(point);

m_PointOld = point;
}
}
...全文
346 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧