C++面板DrawToBitmap不能正常工作
问题描述:
我想使用DrawToBitmap将面板(panel1)保存为图像,而且我已经能够做到这一点。问题是,panel1在panel1内的另一个面板中位置而不是等于0,0。因此,当捕获图像时,由于某种原因它不会捕获在panel1的左上方,而是在Location(0,0)它的父母。 这是我的代码。C++面板DrawToBitmap不能正常工作
Bitmap^ bmp = gcnew Bitmap(panel1->Width, panel1->Height);
panel1->DrawToBitmap(bmp, panel1->Bounds);
bmp->Save("Capture.bmp");
delete bmp;
它正在捕获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");
Thanks @ildjarn!那工作! – SuperPrograman 2012-04-24 22:36:36