0

長方形を作成し、逆 (その長方形の外側の領域) の領域に色を付けようとしています。

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++ を使用しています。ありがとう

4

0 に答える 0