2012-03-28 7 views
-1

Visual Studio (C#)로 작성된 재미있는 응용 프로그램이 있습니다. 궁금합니다. 화면에서 특정 방식으로 패널을 그립니다. 화면을 캡처하지 않고도 폼을 렌더링 할 수 있다면?Visual C# - 폼에서 이미지 렌더링?

감사

답변

3

는 "스크린 샷을 복용"에 의한 경우에 당신은 의미 System.Drawing.Graphics.CopyFromScreen 사용하고, 더 나은 방법이 "PrtSc 키을 보내" 및 this.PointToClient(Point.Empty) 대신 this.Location입니다.

또는, this.DrawToBitmap를 사용할 수 있습니다

using(Bitmap b = new Bitmap(this.Width, this.Height)) { 
    this.DrawToBitmap(b, new Rectangle(0, 0, this.Width, this.Height)); 

    // Your form is now rendered into b. 
} 

이 양식에 포커스가없는 경우에도 작동합니다. 그러나 Aero가 활성화되어 있으면 테두리가 그려지고 Windows 기본 스타일로 그려집니다.

-1

아니, 그것은 (즉, 당신이 요구하는지 무슨 경우) 라이브러리를 screenshotting 어떤 종류가 제공하는 것보다 다른 이미지로 형태의 시각적를 캡처 할 수 없습니다. 당신이 국경을 포함 할 경우, 단지 Size 대신 ClientSize를 사용

using(Bitmap b = new Bitmap(this.ClientSize.Width, this.ClientSize.Height)) { 
    using(Graphics g = Graphics.FromImage(b)) { 
     g.CopyFromScreen(this.PointToClient(Point.Empty), Point.Empty, this.ClientSize); 
    } 

    // Your form is now rendered into b. 
} 

: