0

各列に長方形を持つ WPF グリッドがあります。すべての列は同じ幅 (1*) で、すべての四角形の背景は黒です。デザイナー モードでは、長方形 (グリッドの列の線) の間に細い線がありますが、私の問題は、実行時にこれらの線がまだ表示されていることです。

例

私のコードは次のとおりです。

<Grid ShowGridLines="False">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <Rectangle Fill="Black" />
    <Rectangle Grid.Column="1" Fill="Black" />
    <Rectangle Grid.Column="2" Fill="Black" />
    <Rectangle Grid.Column="3" Fill="Black" />
    <Rectangle Grid.Column="4" Fill="Black" />
    <Rectangle Grid.Column="5" Fill="Black" />
</Grid>

どんな助けでも大歓迎です!

4

2 に答える 2

0

この問題は、6 列のグリッドがあるが、グリッドの幅が 6 ピクセルの正確な倍数ではないために発生します。これにより、各長方形の幅が分数値になります。各四角形の端にあるピクセルについては、WPF レンダリング エンジンが黒い四角形とウィンドウの背景の間を補間し、グレーのストライプを表示します。

<Window x:Class="WpfApp2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWi ndow"
        SizeToContent="WidthAndHeight"
        UseLayoutRounding="False">
    <Grid ShowGridLines="False"
          Width="701"
          Height="300">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Rectangle Grid.Column="0"
                   Fill="Black" />
        <Rectangle Grid.Column="1"
                   Fill="Black" />
        <Rectangle Grid.Column="2"
                   Fill="Black" />
        <Rectangle Grid.Column="3"
                   Fill="Black" />
        <Rectangle Grid.Column="4"
                   Fill="Black" />
        <Rectangle Grid.Column="5"
                   Fill="Black" />
    </Grid>
</Window>

これは、 WPF Snoopなどのツールを使用して確認できます。

修正は次のいずれかです

  • グリッド幅を正確に 6 の倍数に設定します
  • UseLayoutRounding を True に設定します

後者のオプションでは、一部の長方形の幅が (1 ピクセルずつ) 異なりますが、すべてが整数のピクセルになります。

于 2018-10-16T07:59:30.177 に答える