2012-04-24 1 views
0

DrawToBitmap을 사용하여 이미지로 패널 (panel1)을 저장하려고하고 있습니다. 문제는 panel1이 panel1이있는 다른 패널의 내부에 있음을 의미합니다. 이 아닌이 0, 0입니다. 따라서 이미지가 캡처되면 어떤 이유로 화면이 패널 1의 왼쪽 상단에서 캡처되지 않고 위치 (0, 0) 그것의 부모. 여기에 제가 가진 코드가 있습니다.C++ 패널 DrawToBitmap이 올바르게 작동하지 않습니다.

Bitmap^ bmp = gcnew Bitmap(panel1->Width, panel1->Height); 
panel1->DrawToBitmap(bmp, panel1->Bounds); 
bmp->Save("Capture.bmp"); 
delete bmp; 

패널 1의 너비와 높이로 캡처하지만 패널의 오른쪽 하단 모서리를 잘라냅니다. 사전에 감사합니다 ...

+0

고맙습니다 @ildjarn! 그 일했다! – SuperPrograman

답변

2

사용 panel1->ClientRectangle 대신 panel1->Boundspanel1->ClientSize보다는 panel1->Widthpanel1->Height.

또한 코드가 –이면 예외가 발생하지 않는 한 gcnew을 사용하지 마십시오. 대신에 보통의 C++처럼 RAII를 사용하십시오 :

Bitmap bmp(panel1->ClientSize.Width, panel1->ClientSize.Height); 
panel1->DrawToBitmap(%bmp, panel1->ClientRectangle); 
bmp.Save("Capture.bmp"); 
관련 문제