odyn의 개발소

[C#][WPF] 픽셀 스냅 ( Pixel Snap ) 본문

프로그래밍/WPF

[C#][WPF] 픽셀 스냅 ( Pixel Snap )

odyn 2022. 7. 7. 15:15
  • WPF 그래픽 시스템이 해상도와 장치 독립적 단위로 인한 불규칙한 렌더링 문제를 해결하기 위해 사용
  • WPF에서 시스템 DPI 설정에 맞게 자동으로 크기가 조정되는 문제 때문에 보통 가장 자리가 흐려지거나 반투명하게 표시되는 현상이 발생. 이것은 장치에서 사용하는 픽셀이 실제 사용하고 있는 픽셀 위치와 어긋나 발생하는 문제
  • 장치에서 사용하는 픽셀 단위와 WPF에서 사용하는 픽셀 단위가 정확하게 매칭된 경우에는 끝이 매끄럽게 적용되지만 그렇지 않은 경우 원래 결과와 맞지 않음. 이 문제를 해결하기 위해 픽셀 스냅 기능을 사용해 객체의 가장 자리를 장치 픽셀에 맞추어 고정시키는 기능을 제공.
  • 픽셀 스냅을 사용하면 객체에 작은 단위의 Offset을 적용하여 객체의 크기를 장치 픽셀에 맞추거나 일부분을 렌더링 시점에서 제거하여 해결
  • SnapsToDevicePixels 속성을 설정하여 사용

(예)

<Grid> 
    <Rectangle Width="50.5" Height="1" Margin="10" Fill="Yellow"
        SnapsToDevicePixels="False" />
    <Rectangle Width="50.5" Height="1" Margin="10" Fill="Yellow"
        SnapsToDevicePixels="True" />
</Grid>

 

자료 출처: https://icodebroker.tistory.com/828 [ICODEBROKER:티스토리]