要点鼠标左键的时候,在鼠标移动到的位置上显示,而且不能被重绘刷掉(擦掉)
可能是以下步骤吧,在OnDraw中用PDc画
“第一步:定义一个成员变量,用来记录想显示的点。CPoint m_destPoint = new CPoint(-1,-1);
第二步:在OnMouseDown事件里,判断是鼠标左键时,给m_destPoint赋值。然后调用Invalidate()强制刷新
第三步:在OnDraw()事件里,正常绘制处理之后,判断坐标点是否有效,如果有效,则绘制上该点的信息,比如十字架,圆等。”
请问代码
每次画了十字,都在CDocument中增加一条记录。
OnDraw中将Document中记录的都画出来。
m_destPoint 至少应该数组吧,记录每次按下的坐标。然后,在 OnDraw 中刷新 m_destPoint 中的每一个点出来
画十字,简单的方法就是以坐标为中心画两条线。
这个应该很简单的,你很容易的到鼠标点击的地方的点的坐标,就相当于十字交点,自己简单的推算一下竖线(纵向)的上下点的坐标,无非就是x坐标不变,y坐标增加或者减小。这样就的到纵向上的上下两个点。横向的与此类似,就是y坐标不变 ,x坐标增加或者减小。
然后就是画线了,MoveTo/LineTo
void C——View::OnDraw(CDC* pDC)
{
C——Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
pDC->MoveTo(pDoc->a[j].x-3,pDoc->a[j].y);
pDC->LineTo(pDoc->a[j].x+3,pDoc->a[j].y);
pDC->MoveTo(pDoc->a[j].x,pDoc->a[j].y-3);
pDC->LineTo(pDoc->a[j].x,pDoc->a[j].y+6);
// TODO: add draw code for native data here
}
void C——View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
C选中删除Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
pDoc->a[i]=point;
i++;
Invalidate();
CView::OnLButtonDown(nFlags, point);
}