티스토리 뷰

WPF 상에서 Custom Color Picker를 만들 일이 생겨서 어떻게 만들지 알아보던 중

Color Spectrum Image만 있으면 RenderTargetBitmap 을 이용하여 MouseDown 된 위치의

Color를 뽑아올 수 있는 법을 알아냈다. (http://stackoverflow.com/questions/4492128/wpf-color-under-the-pointer)

 

그래서 구현을 해 본 결과 RenderTargetBitmap을 통해 렌더링된 이미지에서 뽑아낸 색이 원본 이미지의 색과

다른 문제가 발생했다. 뽑아낸 색을 보니 원본이미지에서 묘하게 Shift된 듯한 느낌이 들어서

과연 원본 이미지가 어떻게 렌더링됐는지 확인해 보기로 했다. 확인 해본 결과...

 

 

 

 

역시 예상대로 원본 이미지가 Right, Bottom 방향으로 Shift된 상태로 렌더링이 되어있었다.

왜 이런 문제가 발생하는지 구글링을 해 본 결과 발견한 한 가지 사실은

RenderTargetBitmap으로 가령 Canvas를 렌더링한다고 하면 WPF가 암시적으로 parent Container에 대한

Canvas의 Margin을 범위에 추가한다는 것이었다.

(http://stackoverflow.com/questions/7381775/taking-bitmap-of-canvas-is-incorrectly-based-on-top-left-corner-of-window)

결국은 다음과 같은 상황이 벌어진 것이었다.

 

 

 

 

이에 대한 해결책으로 위에 링크된 웹에서의 답변은 "렌더링할 Canvas에 Parent Canvas를 하나 덧씌운뒤 렌더링한다.

그러면 멍청하긴 하지만 작동한다" 였다.

 

뭐 좀 우습긴 하지만;; 이 해결책으로 잘 해결을 보고 Color Picker 만들기에 다시 착수 할 수 있게 되었다

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함