我正在尝试使用GDI +实现拖动一个简单的矩形。我的代码只是将图形对象转换为新位置并绘制一个新的矩形。
只要 OnMouseMove 事件发生,就会经常调用TransllateRectangle 。
void RectangleContainer::TranslateRectangle(CDC *pDC, CRect newR, CRect oldR)
{
Graphics graphics(pDC->m_hDC);
DWORD ole = m_FillColor;
BYTE rr = ((BYTE)(ole));
BYTE gg = ((BYTE)(((WORD)(ole)) >> 8));
BYTE bb = ((BYTE)((ole) >> 16));
SolidBrush linGrBrush(
Color(125, rr, gg, bb)
);
Rect newRectangle = Rect(newR.left, newR.top, newR.Width(), newR.Height());
Matrix matrix;
matrix.Translate(newR.left - oldR.left, 0);
graphics.SetTransform(&matrix);
graphics.FillRectangle(&linGrBrush, newRectangle);
graphics.~Graphics();
}
我的问题是我无法正确删除旧位置绘制的旧矩形。我怎么能实现这个目标呢?