0

我正在尝试使用 DrawToBitmap 将面板(panel1)保存为图像,并且我已经能够做到。问题是,panel1 在另一个面板中,panel1 Location等于 0, 0。因此,当图像被捕获时,由于某种原因它不会在 panel1 的左上角捕获,而是在它的 Location(0, 0)父母。这是我的代码。

Bitmap^ bmp = gcnew Bitmap(panel1->Width, panel1->Height);
panel1->DrawToBitmap(bmp, panel1->Bounds);
bmp->Save("Capture.bmp");
delete bmp;

它使用 panel1 的宽度和高度进行捕获,但这会切断面板的右下角。提前致谢...

4

1 回答 1

2

使用panel1->ClientRectangle代替panel1->Bounds, 和panel1->ClientSize而不是panel1->Widthand panel1->Height

此外,除非必须,否则不要使用gcnew- 您的代码原样不是异常安全的。改用 RAII,就像普通的 C++ 一样:

Bitmap bmp(panel1->ClientSize.Width, panel1->ClientSize.Height);
panel1->DrawToBitmap(%bmp, panel1->ClientRectangle);
bmp.Save("Capture.bmp");
于 2012-04-24T22:43:03.263 回答