2012-04-22 4 views
0

C# winform 프로젝트에 문제가 있습니다.프로젝트의 버튼으로 사각형이 삭제됩니까?

나는 사각형을 그릴 기능을 가지고 :

내 프로젝트에서
public void DrawingSquares(int x, int y) 
{ 
    System.Drawing.Graphics graphicsObj; 
    graphicsObj = this.CreateGraphics(); 
    Pen myPen = new Pen(System.Drawing.Color.Black, 5); 
    Rectangle myRectangle = new Rectangle(x, y, 100, 100); 
    graphicsObj.DrawRectangle(myPen, myRectangle); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    z = Convert.ToInt16(textBox1.Text)-1; 
    k = Convert.ToInt16(textBox2.Text)-1; 
    DrawAllSquares(); 
} 

private void DrawAllSquares() 
{ 
    int tempy = y; 
    for (int i = 0; i < z; i++) 
    { 
    DrawingSquares(x, y); 
    for (int j = 0; j < k - 1; j++) 
    { 
     tempy += 50; 
     DrawingSquares(x, tempy); 
    } 
    x += 50; 
    tempy = y; 
    } 
} 

, 나는 런타임에 양식 주위 버튼을 이동하는 데 사용하는 기능을 가지고 있지만 버튼에 이동할 때 도면 도면이다 삭제됨

그림을 영구적으로 만들려면 어떻게해야합니까?

+0

이 메서드를 호출 할 때 – VibeeshanRC

답변

2

영구히 (응용 프로그램 수명 기준으로) 필요한 경우 Control's (Control, 직사각형을 그려야 함), OnPaint 방법을 사용해야합니다.

당신이 필요로하는 경우 animation 너무 : 그것은 timer을 사용하고 당신이 당신의 DrawSquares에 매개 변수처럼 전달 좌표를 변경하여 해결.

희망이 도움이됩니다.

편집

의사 코드 :

public class MyControl : Control 
{ 
    public override void OnPaint(PaintEventArgs e) 
    { 
     base.OnPaint(e); 

     DrawingSquares(e.Graphics, valueX, valueY); 
    } 

    public void DrawingSquares(Graphics graphicsObj, int x, int y) 
    {  
     Pen myPen = new Pen(System.Drawing.Color.Black, 5); 
     Rectangle myRectangle = new Rectangle(x, y, 100, 100); 
     graphicsObj.DrawRectangle(myPen, myRectangle); 
    } 

} 

valueXvalueY 상대 X이고, 당신이 사각형이 그려 할 위치 Y 좌표.

이 좌표는 상수 값이 될 수 있습니다. 또는 일부 타이머에서 값을 변경하고 을 MyControl으로 호출하면 페인트가 실행됩니다.

+0

코드를 사용하면 설명이 –

+0

+1이되지만 일반적으로 'e.ClipRectangle'과 교차하는 사각형 만 다시 그려야합니다. 당신이 너무 많은 것을 가지고 있지 않는 한 그것들을 모두 다시 그리는 것이 좋습니다. – Rup

+0

@Rup : 예 :)하지만 고급 단계로 건너 뜁니다. 대부분의 그림 그리기 방법에 대해서만 묻는 OP는 그림 모양이 많아서 성능 문제를 만난 후에도 클라이언트 직사각형이 있고 ViewMatrix가 있으며 객체가있을 수 있습니다 이 직사각형을 감싸고 있기 때문에, 그릴 필요가 없습니다. ... – Tigran

관련 문제