문제
나는 1px x 1px 직사각형을 사용하여 해치 패턴을 그릴 WPF DrawingBrush를 만들려고 노력하고 있습니다. 결과 패턴은 클래식 Macintosh 앱의 배경처럼 보입니다.
내가 함께 일하고있는 것은 다음과 같습니다.
<Canvas SnapsToDevicePixels="True">
<Canvas.Background>
<DrawingBrush x:Name="gridBackgroundBrush"
Viewport="0,0,10,10"
ViewportUnits="Absolute"
TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<DrawingGroup.Children>
<GeometryDrawing Geometry="M0,0 L10,0 10,10, 0,10Z" Brush="Green"/>
<GeometryDrawing Geometry="M10,10 L20,10 20,20, 10,20Z" Brush="Green" />
</DrawingGroup.Children>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Canvas.Background>
</Canvas>
상자가 너무 크다는 점을 제외하고는 모든 것이 깨끗하고 날카 로워 보입니다. 브러시의 뷰포트를 조정하면 상황이 흐려지기 시작합니다. 반 알리 아스가 나를 죽이는 것 같아요. 3px를 사용하여 단단한 녹색에서 아무것도없는 것으로 페이드를 사용하려고합니다. 3-4px 미만의 크기에 도달 할 때는 작동하지 않습니다. 반 알리 아스를 완전히 비활성화하고 픽셀-프레드 드로잉을하기 위해 할 수있는 일이 있습니까?
해결책
도면을 0.5px로 상쇄하면 항아리아 효과가 제거됩니다. 지정된 실제 픽셀 오프셋이 아닌 픽셀 오프셋의 가장자리에서 도면이 수행되기 때문에 발생합니다. x, y를 반 픽셀로 오프셋함으로써 드로잉 엔진에 픽셀 자체를 그리도록 지시하여 항아리아의 필요가 없어집니다.
어떤 이유로 든 이것은 GradientBrushes와 작동하지 않습니다.
이 동작은 Mac에 쿼트를 그리는 것과 유사합니다.
참고 : 그렇습니다 ~ 아니다 오프셋 해야하는 뷰포트이지만 지정된 브러시를 사용할 때 그리는 실제 모양입니다.
더 완전한 답변을 원하시면주세요 이 기사를 읽으십시오.
제휴하지 않습니다 StackOverflow