長方形を作成し、逆 (その長方形の外側の領域) の領域に色を付けようとしています。
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++ を使用しています。ありがとう