0

以下の XAML を見ると、2 つの四角形が作成されます。

XAML

<Grid>
    <Rectangle Height="80" Width="300" Fill="Maroon"
        HorizontalAlignment="Center" VerticalAlignment="Bottom">
    </Rectangle>
    <Rectangle Height="300" Width="50" Fill="LightSteelBlue"
        HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="50,0">
    </Rectangle>
    <Polygon Fill="LightSteelBlue" Stroke="LightSteelBlue"
        HorizontalAlignment="Center" VerticalAlignment="Bottom">
        <Polygon.Points>
            <Point X="0" Y="300"/>
            <Point X="50" Y="300"/>
            <Point X="50" Y="0"/>
            <Point X="0" Y="0"/>
            <Point X="0" Y="300"/>
        </Polygon.Points>
    </Polygon>
</Grid>

多角形は実線でない境界線で描画されます。つまり、画像を拡大すると、アンチエイリアス処理されたエッジが表示されます。興味深いことに、四角形を描画すると、これらは得られません (左が四角形、右が多角形):

画像 http://www.barramsoft.com/pub/images/BarBorders2.png

ソリッド/クリーン エッジでポリゴンを描画する方法はありますか?

4

3 に答える 3

4

これは古い質問ですが、誰かが偶然に Google からこれを見つけた場合、これが私のために働いた解決策です:

RenderOptions.EdgeMode="Aliased" をポリゴンに追加します。

<Polygon ...
         RenderOptions.EdgeMode="Aliased">
    <Polygon.Points>
        ...
    </Polygon.Points>
</Polygon>

そのためのMSDN ドキュメントを次に示します。

于 2013-11-28T02:51:43.093 に答える
1

表示される半透明性は、塗りつぶされていない境界線や、十分に太くない境界線ではなく、アンチエイリアシングが原因です。

長方形はDrawingオブジェクトであるため、設定SnapsToDevicePixels="True"ではこれを解決できません。ガイドラインを使用する必要があります。

もう1つの方法は、ピクセルの中央に線を配置することで「修正」することです。

     <Polygon.Points>
            <Point X="0.5"
                   Y="300.5" />
            <Point X="50.5"
                   Y="300.5" />
            <Point X="50.5"
                   Y="0.5" />
            <Point X="0.5"
                   Y="0.5" />
            <Point X="0.5"
                   Y="300.5" />
        </Polygon.Points>

このように座標を指定すると、オンにするピクセルを決定しやすくなります。座標が2つ(またはそれ以上)のピクセルの間にある場合、WPFはそれらすべてに少し色を付けます。

于 2012-01-30T19:14:54.873 に答える
1

厚さを設定します。

StrokeThickness = "5"

また、デバイスのピクセルにスナップする必要がある場合もあります。

SnapsToDevicePixels = "True"

于 2012-01-30T19:07:23.980 に答える