2012-04-24 228 views
0

我想使用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的宽度和高度,但这是截断了面板的右下角。 在此先感谢...

+0

Thanks @ildjarn!那工作! – SuperPrograman 2012-04-24 22:36:36

回答

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