.net C++;面板DrawToBitmap工作不正常

.net C++;面板DrawToBitmap工作不正常,.net,winforms,c++-cli,.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->B

我正在尝试使用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的宽度和高度相同,但这会切断panel1的右下角。
提前感谢…

使用
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");

谢谢@ildjarn!成功了!