2012-04-24 222 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");