1

困惑しています。

アプリケーションディスプレイの仕切りとなるPNG画像を作成しました。画像の高さは次のように3ピクセルです。

ここに画像の説明を入力してください

ただし、C#WPFウィンドウに表示して実行すると、仕切りは約4ピクセルで表示され、色はオフになっています。

コード:

<StackPanel Height="3">
    <StackPanel.Background>
        <ImageBrush ImageSource="Assets/divider.png" Stretch="None"
            AlignmentX="Left" AlignmentY="Top" Viewport="0,0,20,3" 
            ViewportUnits="Absolute" TileMode="FlipX" />
    </StackPanel.Background>
</StackPanel>

出力とズーム:

ここに画像の説明を入力してください

画像が「引き伸ばされている」(にもかかわらず)か、画像を最適化するメカニズムがあると思ったので、画像を削除してStretch="None"、同じ色で高さが1ピクセルの長方形を3つ作成しました。これ:

<StackPanel Height="3" Orientation="Vertical">
    <Rectangle Fill="#484848" Height="1" />
    <Rectangle Fill="#222" Height="1" />
    <Rectangle Fill="#484848" Height="1" />
</StackPanel>

ただし、結果は同様でした。4ピクセルと色が失われます(指定された正確な色ではありません)。

ここに画像の説明を入力してください

ピクセルがオフになっていることを除いて、色もオフになっています。私の色は、、、であるはず#484848です。WPFウィンドウに表示すると、色合いが少し消えます(灰色の色合いが多すぎます!)#222222#484848

ウィンドウのサイズが変更されると、ウィンドウを埋めるためにセパレータも必要です。私は完璧主義者であり、3ピクセルの高さのセパレーターをピクセルパーフェクトにしたいと思っています。その問題を解決するための解決策はありますか?

4

1 に答える 1

0

@Brianと@Sisypheのおかげで、線を正しく表示することができます。ただし、これはまだRectangleディスプレイを介して行われる解決策であり、より良い解決策があると思います。

これが私の現在の解決策です:

<StackPanel HorizontalAlignment="Stretch" Height="3">
    <Rectangle Fill="#484848" Height="1" RenderOptions.EdgeMode="Aliased" />
    <Rectangle Fill="#222222" Height="1" RenderOptions.EdgeMode="Aliased" />
    <Rectangle Fill="#484848" Height="1" RenderOptions.EdgeMode="Aliased" />
</StackPanel>
于 2012-11-08T14:33:57.417 に答える