2013-10-04 3 views
-1

C#의 내 Windows Form 응용 프로그램에서 일련의 직사각형을 그리려합니다. System.Drawing.Graphics를 사용하여 사각형을 그립니다. 그들은 잘 작동하지만 일단 컴퓨터의 다른 응용 프로그램으로 전환하거나 양식을 최소화하면 사라집니다. 누구나 이것이 왜 그런지 알 수 있습니까?Windows Forms에서 모양이 사라짐

System.Drawing.Graphics graphics = this.CreateGraphics(); 
System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(
    25 + (32 * PASS_THROUGH), 190, 32, 32); 
graphics.DrawRectangle(System.Drawing.Pens.Green, rectangle); 
+5

WM_PAINT 이벤트에 대한 응답으로 그리지 않습니다. 당신은 이벤트 핸들러를'Control.Paint' 이벤트에 붙이거나'OnPaint'를 오버라이드 할 필요가 있습니다. 추가 도움이 필요하면 코드를 게시하십시오. –

+1

코드를 추가 했으므로 나는 당신을 업 그레 이드 할 수 있도록 답변으로 – Evan

+0

@TrevorElliott Post에 사과드립니다. – Tarik

답변

3

올바른 방법으로 페인팅하지 않을 것입니다. 여기 그것이 작동하는 방법에 대한 몇 가지 기본 정보입니다 : 그것은 당신의 창을 다시 칠해야 할 때마다

protected override void OnPaint(PaintEventArgs e) 
{ 
    base.OnPaint(e); 

    Rectangle = new Rectangle(25 + (32 * PASS_THROUGH), 190, 32, 32); 
    e.Graphics.DrawRectangle(Pens.Green, Rectangle); 
} 

Windows가이 메소드를 호출합니다

http://msdn.microsoft.com/en-us/library/kxys6ytf.aspx

당신은 다음과 같습니다 코드가 있어야합니다.

동적으로 그려지는 것을 변경하려면이 방법에 논리를 추가해야합니다. 이러한 기록 if 문으로

당신이 drawRectangle 내 위의 예처럼 변수를 변경 한 후 자체를 다시 칠하기 위해 제어 신호를 할 if (drawRectangle) ..., 당신은 문제의 제어에 Control.Invalidate 메소드를 호출 할 필요가있다.

많은 변수와 개체를 관리하여 도형 목록과 같이 페인트 대상을 제어 할 수 있습니다. 그런 다음 페인트 방법에서 그 모양을 반복하여 하나씩 그립니다. 나는 이것이 당신이하려고하는 것인지 확실하지 않거나 폼의 모양을 사용자 정의하고 동적으로 변경하지 않아도되는지 확실하지 않습니다.

관련 문제