我正在尝试将我创建的椭圆移动到另一个位置。以前我检查过鼠标是否在椭圆上并改变了椭圆的颜色。现在我在移动我制作的椭圆时遇到了问题。这是我的Buttondown事件处理程序代码
CClientDC dc(this);
CRect rect;
GetClientRect(&rect);
dc.SetMapMode(MM_ANISOTROPIC);
dc.SetWindowExt(100, 100);
dc.SetViewportExt(rect.Width(), rect.Height());
//CRect rectEllipse = new CRect(0, 0, 12, 7);
CRect rectEllipse(ellipse.cx, ellipse.cy, (ellipse.cx) + 12, (ellipse.cy) + 7);
CRgn elipseRgn;
elipseRgn.CreateEllipticRgnIndirect(rectEllipse);
if (elipseRgn.RectInRegion(&rectEllipse))
{
SetCapture();
mouseCapture = true;
dc.DPtoLP(&point);
if (elipseRgn.PtInRegion(point))
{
CBrush myBrush;
myBrush.CreateHatchBrush(HS_CROSS, RGB(0, 0, 255));
dc.SelectObject(myBrush);
dc.Ellipse(ellipse.cx, ellipse.cy, (ellipse.cx) + 12, (ellipse.cy) + 7);
InvalidateRect(rectEllipse, FALSE);
}
}
CDialogEx::OnLButtonDown(nFlags, point);
}
这是OnMouseMove事件处理程序的代码:
CRect rectEllipse(ellipse.cx, ellipse.cy, (ellipse.cx) + 12, (ellipse.cy) + 7);
if (mouseCapture)
{
InvalidateRect(rectEllipse, TRUE);
ellipse.cx = point.x;
ellipse.cy = point.y;
CRect rectNew(ellipse.cx, ellipse.cy, (ellipse.cx) + 12, (ellipse.cy) + 7);
InvalidateRect(rectNew, TRUE);
}
每次运行代码并尝试移动此椭圆时,在椭圆上按下鼠标左键时,所有发生的事情都会在按下鼠标的位置擦除椭圆。我需要将这个椭圆移动到屏幕上,鼠标按钮压在椭圆上并保持新的颜色。有人可以帮我解决这个问题吗?
谢谢