FrameworkElement.UseLayoutRounding 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定值,指出配置進位是否應該在配置期間套用到這個項目的大小和位置。
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 計算的所有非整數圖元值都會四捨五入為整個圖元值。
這個屬性是由子專案繼承。
注意
您應該在根項目上設定 UseLayoutRounding 為 true
。 配置系統會將子座標新增至父座標;因此,如果父座標不在圖元界限上,子座標也不在圖元界限上。 如果 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 上執行時,此設定才會生效。