我正在尝试使用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的宽度和高度,但这会切断面板的右下角。 提前谢谢......
答案 0 :(得分:2)
使用panel1->ClientRectangle
代替panel1->Bounds
和panel1->ClientSize
而不是panel1->Width
和panel1->Height
。
此外,除非必须,否则不要使用gcnew
- 您的代码原样不是例外。使用RAII,就像普通的C ++一样:
Bitmap bmp(panel1->ClientSize.Width, panel1->ClientSize.Height);
panel1->DrawToBitmap(%bmp, panel1->ClientRectangle);
bmp.Save("Capture.bmp");