2013-03-20 2 views
0

이미지의 경계를 초과 할 수있는 좌표를 지정하는 이미지를 잘라야합니다. 좌표가 꺼져 있으면 적절한 채우기가 적용됩니다.채우기로 자르기

일반적으로 :

+===============+ 
| Source Bitmap | 
| +-------+ | 
| + Crop + | 
| +-------+ | 
|    | 
+===============+ 

... WriteableBitmapEx의 Crop() 확장과 함께 완벽하게 작동합니다. 하지만 내 경우에는 :

+-----------+ 
+ Crop  + 
+   + 
+ +===============+ 
+ | Source Bitmap | 
+ |    | 
+ +===============+ 
+   + 
+-----------+ 

이 경우 경계는 왼쪽 위와 아래를 초과합니다. 그 결과 비트 맵 필요가되게합니다 :

+-----------+ 
+   + 
+   + 
+ +=========+ 
+ |   + 
+ |   + 
+ +=========+ 
+   + 
+-----------+ 

는 이러한 목표를 달성하는 가장 좋은 (빠른) 방법은 무엇입니까?

답변

1

최종 결과의 차원으로 새 WB를 만든 다음 Blit() 메서드를 사용하여 소스 영역을 새 대상 비트 맵 영역으로 복사하는 것이 가장 쉽습니다.

멋진 ASCII 아트 작업 btw. :)

+0

정확히 내가 기대했던 것입니다. 어떤 이유로 블리 팅 (blitting)은 테스트 중에 AccessViolationException을 발생시키지 만, 그럴 가능성이 가장 높습니다. 감사! :-) –

+0

당신이 제공하는 좌표가 WB 범위 밖에 있기 때문에 그럴 가능성이 큽니다. –

+0

정확하게 요점은 무엇입니까 (덧붙여 야합니다). Clone() 메서드는 동일한 예외 (경계가 지정되지 않음)를 생성하기 때문에 WriteableBitmapEx에서 문제가되는 것 같습니다. WinRTXAMLToolkit의 Copy()로 전환해도 동일한 문제가 발생하지 않습니다. 실제로 복사() * 다음 * Blit() 사용해야합니다. –