我正在尝试创建一个矩形并为反转(该矩形外部的区域)区域着色。
Gdiplus::Region *cropRegion = new Gdiplus::Region(cropRectF);
Gdiplus::Rect gdiCropRect(0.0f, 0.0f, 1000.0f, 1000.0f);
Gdiplus::Rect imageContainer(0.0f, 0.0f, 1000.0f, 1000.0f);
Gdiplus::Region *completeRegion = new Gdiplus::Region(imageContainer);
completeRegion->Intersect(cropRegion);
gdiGraphics.SetClip(completeRegion, Gdiplus::CombineModeXor);
Gdiplus::GraphicsPath *cropRectPath = new Gdiplus::GraphicsPath();
cropRectPath->AddRectangle(cropRectF);
Gdiplus::Pen* myPen = new Gdiplus::Pen(Gdiplus::Color::White);
myPen->SetWidth(1);
gdiGraphics.DrawPath(myPen, cropRectPath);
Gdiplus::SolidBrush dimmingBrush(Gdiplus::Color::MakeARGB(50, 0, 0, 0));
gdiGraphics.FillRegion(&dimmingBrush, completeRegion);
此处的代码完全正常,
然而,当我尝试使用MouseMove CallBack中的鼠标移动来移动此矩形时,它会移动,但会留下白色痕迹。
我试图在最后调用InvalidateRect,但后来我的矩形根本没有移动。 任何想法如何清除旧矩形。 我正在使用GDI +和C ++。 感谢