문제

나는 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에 쿼트를 그리는 것과 유사합니다.

참고 : 그렇습니다 ~ 아니다 오프셋 해야하는 뷰포트이지만 지정된 브러시를 사용할 때 그리는 실제 모양입니다.

더 완전한 답변을 원하시면주세요 이 기사를 읽으십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top