0

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の幅と高さでキャプチャしていますが、それはパネルの右下隅を切り取っています。前もって感謝します...

4

1 に答える 1

2

panel1->ClientRectangleおよびの代わりに、panel1->Boundsおよびを使用します。panel1->ClientSizepanel1->Widthpanel1->Height

さらに、必要な場合をgcnew除いて使用しないでください。コードはそのままでは例外安全ではありません。通常のC++と同じように、代わりにRAIIを使用します。

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