FrameworkElement.UseLayoutRounding 屬性

定義

取得或設定值,指出配置進位是否應該在配置期間套用到這個項目的大小和位置。

C#
public bool UseLayoutRounding { get; set; }

屬性值

如果套用配置進位,則為 true否則為 false。 預設為 false

範例

下列範例示範屬性在單一圖元寬度線條上的效果 UseLayoutRounding 。 左邊的線條不會使用版面配置舍入,而右邊的線條則使用版面配置舍入。 如果您緩慢調整視窗的大小,您可以看到版面配置四捨五入所做的差異。

XAML
<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當元素的 屬性為 true 時,和 Arrange 傳遞期間 Measure 計算的所有非整數圖元值都會四捨五入為整個圖元值。

這個屬性是由子專案繼承。

備註

您應該在根項目上設定 UseLayoutRoundingtrue 。 配置系統會將子座標新增至父座標;因此,如果父座標不在圖元界限上,子座標也不在圖元界限上。 如果 UseLayoutRounding 無法在根目錄設定,請在子系上設定 SnapsToDevicePixels ,以取得您想要的效果。

在圖元界限上繪製物件時,當邊緣落在裝置圖元中間時,消除由反別名所產生的半透明邊緣。 下圖顯示位於裝置圖元中間的單一圖元寬度線條輸出。 左邊的行不會使用版面配置舍入,而且是反別名的。 右側的線條使用版面配置舍入。

相較于單一圖元線,反別名線條。

當您使用版面配置舍入和 Star 調整大小時,配置系統會在資料行或資料列度量中建立小型變化,以避免子圖元轉譯。 例如,如果格線的寬度總計為 100,且每個大小 Star 各有 3 個數據行,而不是建立三個寬度等於 33.3 的資料行,則版面配置系統會建立寬度為 33 且寬度為 34 的資料行。

備註

在 .NET 4.6 中,已對版面配置四捨五入進行變更,以減少控制項中具有框線的裁剪實例。 根據預設,如果您的目標 Framework .NET Framework 4.6 或更高版本,就會啟用此功能。 以舊版架構為目標的應用程式可以將下列設定新增至app.config檔案,以加入宣告新行為: <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime> 只有在應用程式在 .NET Framework 4.6 上執行時,此設定才會生效。

適用於

產品 版本
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10