2010-07-04 7 views
1

GDI +를 사용하여 양식에 이미지와 도형을 그리는 C# 응용 프로그램을 작성 중이지만 삭제 방법은 잘 모릅니다. 예를 들어 GDI +를 사용하여 그릴 그리드를 그리는 옵션이 있다고 가정 해 봅시다. 사용자가이 기능을 끄면 어떻게 할 지, 작업 캔버스의 다른 개체에는 영향을 미치지 않고 삭제할 수 있습니다. 가장 좋은 방법은 무엇입니까? 감사!GDI + 개체 삭제

답변

3

간단한 예로, 폼에 체크 박스를 드롭 :

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     checkBox1.CheckedChanged += new EventHandler(checkBox1_CheckedChanged); 
    } 
    private void checkBox1_CheckedChanged(object sender, EventArgs e) { 
     this.Invalidate(); 
    } 
    protected override void OnPaint(PaintEventArgs e) { 
     if (checkBox1.Checked) { 
      e.Graphics.DrawArc(Pens.Black, this.ClientRectangle, 0, 360); 
     } 
    } 
} 

무효화()를 호출 원본 도면 소거 열쇠, 그것은 그려야하는 형태 강제. 기본 클래스에서 구현되는 기본 OnPaintBackground 메서드는 모든 것을 전장 회색으로 바꿉니다.

1

Windows는 비트 맵 출력을 저장하지 않습니다. 항목을 제거하려면 OnPaint()에서 조건부로 플래그를 그리십시오. 플래그를 false로 설정하고 문제의 컨트롤에서 Invalidate()를 호출하십시오.

1

다른 사용자가 말하길, 모든 도면 영역이 아닌 필요한 영역에서만 Invalidate(region)을 사용하여 성능을 권장합니다.

관련 문제