2010-08-13 3 views
1

페인트가 배열이나 다른 것으로 바뀌기 전에 이미지를 저장하여 그림 상자에 실행 취소 기능을 만들려고합니다. 나는 목록으로 시도했지만 이미지 목록은 크기가 내 porpoises 작은 것입니다 항상 같은 이미지를 얻을. 실행 취소 데이터를 저장하는 가장 좋은 방법은 무엇입니까? 또는 페인트 할 때마다 이미지를 메모리에 저장할 수 있습니까? 고맙습니다 !이미지 컬렉션을 변경하면 실행 취소가 발생합니다.

답변

2

매번 이미지 내용을 복제해야합니다. 나는 당신이 항상 이미지의 레퍼런스를리스트에 추가하고 있다고 생각한다.

실행 취소 기능을 올바르게 수행하려면 Command Pattern을 살펴보십시오.

또 다른 방법은 원본 이미지와 작업 후의 이미지의 차이를 계산 한 다음 차이를 저장하여 메모리를 절약하는 것입니다.

+0

고맙습니다. 나는 구원받을 때마다 비트 맵의 ​​인스턴스를 만들었고 훌륭하게 작동합니다. 이 작업을 수행하고 5 비트 맵을 제한적으로 절약하는보다 우아한 방법을 찾아 보겠습니다. – andySF

1

많은 그림 물감이 동일한 이미지에서 발생합니다. Windows는 컨트롤의 일부를 다시 칠해야 할 때마다 Paint 이벤트를 발생시킵니다. PB를 가로 질러 다른 창을 끌 때처럼. 또는 양식을 최소화하고 복원하십시오.

다시 말해, 그림판이 이미지가 변경되었다고 말하지 않습니다. PictureBox에서 자신 만의 클래스를 파생시키고 Image 속성을 재정의해야합니다. 이미지가 변경되면 setter가 호출됩니다.

+0

저장은 bool 값에 따라 조절되므로 필요할 때만 수행됩니다. – andySF

관련 문제