2011-06-11 2 views
2

나는 한계의 창 스냅 샷을 취하는 테스트 WindowForm 응용 프로그램을 만들었습니다. 하지만 GetBounds()에게 필요한 것을 줄 수는 없습니다. 그는 그래픽을 원하지만 이미 경계를 포함, 그냥 자신의 포인트와 크기를 원하는 :Working with System.Drawing.Regoon

private void CaptureBtn_Click(object sender, EventArgs e) 
{ 
    Region region = GetRegionByHWnd(GetForegroundWindow()); 

    Rectangle rectangle = new Rectangle(
             region.GetBounds().Location, 
             region.GetBounds().Size); 

    CaptureImage(rectangle.Location, Point.Empty, rectangle.Size); 
} 

그 문제 이전에 사람에게 발생 했는가, 또는 그것을 해결하는 방법을 알고?

답변

1

먼저 RegionIDisposable을 구현하므로 using 문에 배치하거나 Dispose를 호출해야합니다.

이외의 코드는 GetRegionByHWndCaptureImage에 대한 코드를 참조해야합니다. 정말로 그 코드가 필요합니까? 왜 someWindow.Bounds을 사용할 수 있습니까?

+0

재미있는, 당신은 "someWindow.Bonds"의 예를 가지고? 나는 바탕 화면 채권을 알고 있지만 창문은 안다. 전경 (활성) 창이 필요합니다 – user779444

+0

[Form.Bounds] (http://msdn.microsoft.com/en-us/library/system.windows.forms.control.bounds.aspx),하지만 그건 당신을 도울 것입니다. System.Windows.Forms.Form에 대한 참조를 얻을 수있는 경우에는 보이지 않습니다. –

+0

+1 사용을 가리키는 +1, 많은 사람들이 이것을 잊어 버립니다. –

0

아마도 그 도움 : 나는 captureimage처럼 방법을 모르는 RECTANGLE

. 그러나 아마도 당신은 통제에 대한 상대적 위치가 필요합니까? Point to Client/Point to Screen

그렇지 않은 경우 받으려는 데이터와 수신하는 데이터를 알려주십시오.

또한 Rectangle 유형 대신 RECT MSDN 유형을 찾아보십시오.

좋은 기사

현재 위치 :

http://www.codeguru.com/csharp/csharp/cs_graphics/screencaptures/article.php/c6139

http://cid-32fd2eb6551ddb56.office.live.com/self.aspx/.Public/CaptureWindow.rar?sa=170500830

http://winapi.freetechsecrets.com/win32/WIN32Capturing_an_Image.htm

감사