質問

私は1pxの四角で2 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>

すべては箱があまりにも大きいであることを除いて、クリアでシャープに見えます。私はブラシの上にビューポートを調整すると、物事がぼやけて取得するために開始します。アンチエイリアシングが私を殺しているものであるように見えます。それは私が3-4px以下のサイズに到達したときに動作しない、何も緑色からフェードする3pxを使用したいです。私は完全にアンチエイリアシングを無効にして、ピクセルの正確な描画を行うために何かできることはありますか?

役に立ちましたか?

解決

0.5pxで描画オフセット、あなたはアンチエイリアス効果を取り除くでしょう。描画は、あなたが指定されていることをオフセットではなく、実際のピクセルに比べ、オフセット画素のエッジ上で行われているので、それが起こります。半画素とのX、Yをoffset'ingすることで、アンチエイリアシングの必要がなくなりピクセル自体、上に描画するための描画エンジンを教えてください。

いくつかの理由とはいえ、これはgradientbrushesでは動作しません。

この現象は、Mac上で描画クォーツに持っているものに似ています。

注:これは、のないのあなたはオフセットすべきビューポートが、指定されたブラシを使用しているときに描画している実際の形状です。

より完全な答えは、してくださいこの記事を読みます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top