(연관된 글이 1개 있습니다.)
안녕하세요. 오랜만에 질문 드립니다.
WPF로 격자 무늬를 만들려고 Canvas 위에 가로축 세로축으로 Line을 그려서 올렸습니다.
그리고 Line을 원하는 만큼 가늘게 만들면서도 선명한 색상으로 보이게 하려고
(StrokeThickness는 1 이하로)
SnapsToDevicePixels = true 속성을 주었습니다.
그런데 첨부한 예제처럼 Line에 SnapsToDevicePixels = true 로 처리를 하면
모든 Line 에 적용되는 것이 아니라 일부 Line에만 적용됩니다. (SnapsToDevicePixels 값은 모두 true 로 잘 할당되어 있습니다.)
적용된다는 것의 의미는 색상과 StrokeThickness 까지 모두 의도된 것으로 표시된다는 것을 말하는 건데요.
실제로는 모든 Line의 StrokeThickness는 적용된 듯 보이나 일부 Line 들의 색상만 정확히 표시되는 현상이 있습니다
예제에서는 Line 별로 생성할 때 SnapsToDevicePixels = true 처리를 해주었는데
테스트 해본 결과 Canvas나 Grid, Window 에 SnapsToDevicePixels = true 속성을 주어도 결과가 마찬가지였습니다.
(UseLayoutRounding 은 동작이 다르더군요. 제가 의도한 대로 동작하는 것은 SnapsToDevicePixels 이 더 가까웠습니다.)
더군다나 더 특이한 점은
Window의 SizeChanged 에서 실제 Canvas의 크기에 맞춰서 다시 그려주는 코드가 실행되면
색상 처리가 제멋대로 움직여버립니다.
뭔가 제가 속성들의 의미를 잘못 알고 사용한 걸까요?
며칠 동안 검색하고 삽질하면서 같은 자리만 반복하고 있네요.
이게 무슨 현상인지 감이 잡히지도 않습니다.
바쁘신데 죄송스럽지만 도움 부탁드립니다. (__)
[연관 글]
[최초 등록일: ]
[최종 수정일: 11/11/2016]