2011-01-12 15 views
0

imagebox를 통해 winform에 비트 맵을로드했습니다.winform에서 C# 다시 그리기

imagebox.image = null; 
draw(); //implements the drawing of the bitmap and assigns to the imagebox/winform 

그러나 이미지를 업데이트하려고 할 때 양식을 다시 숨긴 다음 표시하면 작동합니까? 이 문제를 어떻게 해결할 수 있습니까?

편집 : 문제가 해결되었습니다.

답변

1

이미지 속성을 더 스마트하게 만듭니다. 예 :

private Image mImage; 

public Image Image { 
    get { return mImage; } 
    set { 
     mImage = value; 
     Invalidate(); 
    } 
} 

이제 가시적 인 이미지가 자동으로 새로 고침됩니다.

+0

감사합니다. 한스. 나는 지금 일하고있다. 비트 맵을 다시 그릴 때 폼과 Imagebox를 다시 만드는 잘못된 코드로 몇 가지 어리석은 실수를 저지른 것입니다. –

1

메서드 끝에 Invalidate(imagebox.Bounds);을 호출 해 보았습니까?

다시 그리기를 강제해야하므로 양식을 다시 숨기거나 표시 할 필요가 없습니다.

+0

아니면 그냥'imagebox.Invalidate()'를 호출 할 수 있습니다. 아, 그리고 매번 새로운 이미지를 생성 할 필요가 없습니다. 동일한 이미지를 그리면됩니다. 훨씬 더 효율적입니다. –

+0

imagebox가 무효화됩니다. 위의 편집에서 코드를 포함 시켰습니다. –

1

이 링크 Bob Powell GDI+ FAQ을 확인하십시오. 일부 GDI 기본 사항에 대한 명확한 지침이 있지만이 링크는 PictureBox 드로잉 예제로 연결됩니다.

기본적으로 ImageBox의 Paint 이벤트에 연결하고 다시 그릴 때마다 Invalidate()를 호출하려고합니다.

+0

PictureBox는 이미 필요할 때마다 이미 이미지를 다시 그려야하기 때문에 Paint 이벤트가 필요하다고 생각하지 않습니다. 그래도 Invalidate()는 유효합니다. –

+0

링크를 제공해 주셔서 감사합니다. 그것을 확인할 것입니다. –