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
Значение свойства
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, все не целочисленные значения пикселей, вычисляемые во время Measure и Arrange проходы, округляются до целых значений пикселей.
Это свойство наследуется дочерними элементами.
Замечание
Необходимо задать для UseLayoutRoundingtrue корневого элемента. Система макета добавляет дочерние координаты в родительские координаты; Таким образом, если родительские координаты не находятся на границе пикселя, дочерние координаты также не находятся на границе пикселя. Если UseLayoutRounding не удается установить в корневом каталоге, установите SnapsToDevicePixels на дочернем элементе нужный эффект.
Рисование объектов на границах пикселей устраняет полупрозрачные края, созданные с помощью псевдонима, когда край падает в середине пикселя устройства. На следующем рисунке показаны выходные данные одной линии ширины пикселей, которая падает в середине пикселя устройства. Линия слева не использует округление макета и является анти-псевдонимом. В правой строке используется округление макета.
При использовании округления макета и Star изменения размера система макета создает небольшие вариации в измерениях столбцов или строк, чтобы избежать отрисовки подпикселя. Например, если сетка имеет общую ширину 100 с 3 столбцами каждого размера Star, вместо создания трех столбцов с равной шириной 33,3, система макета создает 2 столбца с шириной 33 и одной с шириной 34.
Замечание
В .NET 4.6 были внесены изменения в округление макета, чтобы уменьшить экземпляры обрезки в элементах управления с границами. По умолчанию эта функция включена, если целевая платформа — .NET Framework 4.6 или более поздней версии. Приложения, предназначенные для более ранних версий платформы, могут принять участие в новом поведении, добавив следующий параметр в файл app.config: <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime> параметр действует только при запуске приложения на платформе .NET Framework 4.6.