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 。 左邊的線條不會使用版面配置舍入,而右邊的線條則使用版面配置舍入。 如果您緩慢調整視窗的大小,您可以看到版面配置四捨五入所做的差異。

<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 上執行時,此設定才會生效。

適用於