C ++面板DrawToBitmap无法正常工作

时间:2012-04-24 22:19:05

标签: .net winforms c++-cli

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

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

它正在捕捉panel1的宽度和高度,但这会切断面板的右下角。 提前谢谢......

1 个答案:

答案 0 :(得分:2)

使用panel1->ClientRectangle代替panel1->Boundspanel1->ClientSize而不是panel1->Widthpanel1->Height

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

Bitmap bmp(panel1->ClientSize.Width, panel1->ClientSize.Height);
panel1->DrawToBitmap(%bmp, panel1->ClientRectangle);
bmp.Save("Capture.bmp");