各位大虾:需要一段代码,关于作图的简单问题.图片http://admin.qionglai.com/result.jpg

tjq_tang 2003-06-13 01:38:10
紧急求助
如图:
http://admin.qionglai.com/result.jpg
搞定后vc/mfc的论坛全部该贴同是结帐
要求:
1.鼠标作圆
2.拖动就达到这种效果http://admin.qionglai.com/result.jpg
但是时间很急.
...全文
51 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
FBStudio 2003-06-13
  • 打赏
  • 举报
回复
下面是一个画水平线和竖线的例子。

在视类中定义三个成员变量
CPoint m_pt1; // 起点位置
CPoint m_pt2; // 终点位置
bool m_bDrawLine; // 画线标志
其中m_bDrawLine的初始值为false
在视类中处理WM_LBUTTONDOWN、WM_MOUSEMOVE、WM_LBUTTONUP消息
void CChildView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_bDrawLine = true;
SetCapture();
m_pt1 = point;
m_pt2 = point;
CClientDC dc(this);
dc.SetROP2(R2_NOT); // 设置画笔为取反模式,在相同位置画两次将什么也不显示。
dc.MoveTo(m_pt1);
dc.LineTo(m_pt2);
}

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

if (m_bDrawLine)
{
CClientDC dc(this);
dc.SetROP2(R2_NOT); // 设置画笔为取反模式,在相同位置画两次将什么也不显示。
dc.MoveTo(m_pt1);
dc.LineTo(m_pt2);

int dx = point.x - m_pt1.x;
if (dx < 0) dx = - dx;
int dy = point.y - m_pt1.y;
if (dy < 0) dy = - dy;
if (dx > dy)
{
m_pt2.y = m_pt1.y;
m_pt2.x = point.x;
}
else
{
m_pt2.x = m_pt1.x;
m_pt2.y = point.y;
}

dc.MoveTo(m_pt1);
dc.LineTo(m_pt2);
}
}

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

CClientDC dc(this);
dc.SetROP2(R2_NOT); // 设置画笔为异或模式,在相同位置画两次将什么也不显示。
dc.MoveTo(m_pt1);
dc.LineTo(m_pt2);

dc.SetROP2(R2_COPYPEN);
dc.MoveTo(m_pt1);
dc.LineTo(m_pt2);

m_bDrawLine = false;
ReleaseCapture();
}

编译就好
tjq_tang 2003-06-13
  • 打赏
  • 举报
回复
鼠标画图程序也可以啊.
可以修改得
dhbo 2003-06-13
  • 打赏
  • 举报
回复
up

19,468

社区成员

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

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