0

我正在尝试使用 MouseMove 在面板内的新位置重新绘制相同的矩形它可以工作,但是我有很多来自 Invalidate 的闪烁......我尝试了 Refresh(),但它相同......请帮助我

这是我使用 MouseMove 事件在面板内绘图的代码:

if (panel->BackgroundImage == nullptr)
{
    panel->BackgroundImage = gcnew System::Drawing::Bitmap(panel->Width, panel->Height);
}

Graphics^ buffGraphics = Graphics::FromImage(panel->BackgroundImage);

buffGraphics->Clear(panel->BackColor);
buffGraphics->DrawRectangle(System::Drawing::Pens::Blue,10, 10, 50, 50);

panel->Invalidate();
panel->Update();
4

2 回答 2

0

将 onForm 加载方法添加到您的 Form 并启用双缓冲:

DoubleBuffered = true;

或者,如果您想要另一种方法是转到表单设计视图,右键单击表单并单击属性,然后搜索DoubleBuffered 属性并将其设置为 true

此外,任何绘图都应该在 Paint 事件中

于 2013-04-14T18:31:16.820 回答
-1

看起来 可能会Graphics->CopyFromScreen()有所帮助

于 2013-03-31T08:03:54.340 回答