次の方法で共有


FrameworkElement.UseLayoutRounding プロパティ

定義

レイアウトの間に、この要素のサイズおよび位置にレイアウトの丸めを適用するかどうかを示す値を取得または設定します。

public:
 property bool UseLayoutRounding { bool get(); void set(bool value); };
public bool UseLayoutRounding { get; set; }
member this.UseLayoutRounding : bool with get, set
Public Property UseLayoutRounding As Boolean

プロパティ値

レイアウトの丸めを適用する場合は true、それ以外の場合は false。 既定値は、false です。

次の例は、 プロパティが UseLayoutRounding 1 つのピクセル幅の線に及ぼす影響を示しています。 左側の線はレイアウトの丸めを使用せず、右側の線はレイアウトの丸めを使用します。 ウィンドウのサイズをゆっくりと変更すると、レイアウトの丸めによって生まれる違いが確認できます。

<Page x:Class="LayoutRounding.Lines"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Lines" Name="linesPage"
    >
  <StackPanel Width="150"  Margin="7" Orientation="Horizontal">
    <!-- Single pixel line with layout rounding turned OFF.-->
    <Rectangle UseLayoutRounding="False"
       Width="45.5" Margin="10" Height="1" Fill="Red"/>
    <!-- Single pixel line with layout rounding turned ON.-->
    <Rectangle UseLayoutRounding="True"
      Width="45.5" Margin="10" Height="1" Fill="Red"/>
  </StackPanel>
  <!-- Background Grid -->
  <Page.Background>
    <DrawingBrush  Viewport="0,0,10,10" ViewportUnits="Absolute" TileMode="Tile">
      <DrawingBrush.Drawing>
        <DrawingGroup>
          <GeometryDrawing Brush="White">
            <GeometryDrawing.Geometry>
              <RectangleGeometry Rect="0,0,1,1" />
            </GeometryDrawing.Geometry>
          </GeometryDrawing>
          <GeometryDrawing Geometry="M0,0 L1,0 1,0.1, 0,0.1Z " Brush="#CCCCFF" />
          <GeometryDrawing Geometry="M0,0 L0,1 0.1,1, 0.1,0Z" Brush="#CCCCFF" />
        </DrawingGroup>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Page.Background>
</Page>

注釈

要素の UseLayoutRounding プロパティが の場合、 trueArrange パス中にMeasure計算されるすべての非整数ピクセル値は、ピクセル値全体に丸められます。

このプロパティは、子要素によって継承されます。

Note

ルート要素では を true に設定UseLayoutRoundingする必要があります。 レイアウト システムは、親座標に子座標を追加します。したがって、親座標がピクセル境界上にない場合、子座標もピクセル境界上にありません。 ルートでを設定できない場合 UseLayoutRounding は、 を子に設定 SnapsToDevicePixels して、目的の効果を取得します。

ピクセル境界上にオブジェクトを描画すると、デバイス ピクセルの中央にエッジが配置されると、アンチエイリアシングによって生成される半透明のエッジが除去されます。 次の図は、デバイス のピクセルの中央にある 1 つのピクセル幅の線の出力を示しています。 左側の線はレイアウトの丸めを使用せず、アンチエイリアスが付きます。 右側の線はレイアウト丸めを使用します。

1 ピクセルの線と比較したアンチエイリアシングされた線。

レイアウトの丸めと Star サイズ設定を使用すると、サブピクセルのレンダリングを回避するために、レイアウト システムによって列または行の測定値に小さなバリエーションが作成されます。 たとえば、グリッドの幅が 100 で、各サイズ Starが 3 列の場合、幅が 33.3 の 3 つの列を作成する代わりに、レイアウト システムは幅が 33 で幅が 34 の 2 列を作成します。

Note

.NET 4.6 では、レイアウトの丸めを変更して、境界線を持つコントロールのクリッピングのインスタンスを減らしました。 既定では、ターゲット フレームワークが 4.6 以上.NET Framework場合、この機能は有効になります。 以前のバージョンのフレームワークを対象とするアプリケーションは、app.config ファイルに次の設定を追加することで、新しい動作をオプトインできます。<runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime>この設定は、アプリケーションが .NET Framework 4.6 で実行されている場合にのみ有効になります。

適用対象