FrameworkElement.UseLayoutRounding Eigenschaft

Definition

Ruft einen Wert ab oder legt diesen fest, der angibt, ob die Layoutglättung auf die Größe und Position dieses Elements während des Layouts angewendet werden.Gets or sets a value that indicates whether layout rounding should be applied to this element's size and position during layout.

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

Eigenschaftswert

true, wenn die Layoutglättung angewendet wird, andernfalls false.true if layout rounding is applied; otherwise, false. Die Standardeinstellung ist false.The default is false.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie sich die UseLayoutRounding-Eigenschaft auf einer einzelnen Zeile mit Pixel Breite auswirkt.The following example demonstrates the effect that the UseLayoutRounding property has on a single pixel-width line. Die Linie auf der linken Seite verwendet keine Layoutrundung, und die Linie auf der rechten Seite verwendet Layoutrundung.The line on the left does not use layout rounding and the line on the right uses layout rounding. Wenn Sie die Größe des Fensters langsam ändern, sehen Sie den Unterschied, dass die Layoutrundung durchführt.If you slowly resize the window, you can see the difference that layout rounding makes.

  
<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>  

Hinweise

Wenn die UseLayoutRounding-Eigenschaft für ein Element trueist, werden alle nicht ganzzahligen Pixelwerte, die während des Measure und Arrange Durchläufen berechnet werden, auf die ganzen Pixelwerte gerundet.When the UseLayoutRounding property for an element is true, all non-integral pixel values that are calculated during the Measure and Arrange passes are rounded to whole pixel values.

Diese Eigenschaft wird von untergeordneten Elementen geerbt.This property is inherited by child elements.

Hinweis

Sie sollten UseLayoutRounding festlegen, um für das Stamm Element true.You should set UseLayoutRounding to true on the root element. Das Layoutsystem fügt den übergeordneten Koordinaten untergeordnete Koordinaten hinzu. Wenn sich die übergeordneten Koordinaten nicht an einer Pixel Grenze befinden, befinden sich die untergeordneten Koordinaten daher ebenfalls nicht in einer Pixel Grenze.The layout system adds child coordinates to the parent coordinates; therefore, if the parent coordinates are not on a pixel boundary, the child coordinates are also not on a pixel boundary. Wenn UseLayoutRounding nicht im Stammverzeichnis festgelegt werden kann, legen Sie SnapsToDevicePixels für das untergeordnete Element fest, um den gewünschten Effekt zu erhalten.If UseLayoutRounding cannot be set at the root, set SnapsToDevicePixels on the child to obtain the effect that you want.

Das Zeichnen von Objekten an Pixel Grenzen entfernt die halbtransparenten Kanten, die durch Antialiasing erzeugt werden, wenn ein Rand in der Mitte eines Geräte Pixels liegt.Drawing objects on pixel boundaries eliminates the semi-transparent edges that are produced by anti-aliasing, when an edge falls in the middle of a device pixel. Die folgende Abbildung zeigt die Ausgabe einer einzelnen Zeile mit Pixel Breite, die in die Mitte eines Geräte Pixels fällt.The following illustration shows the output of a single pixel-width line that falls in the middle of a device pixel. Die Linie auf der linken Seite verwendet keine Layoutrundung und ist Antialiasing.The line on the left does not use layout rounding and is anti-aliased. Die Zeile auf der rechten Seite verwendet Layoutrundung.The line on the right uses layout rounding.

Eine-Zeile mit einem AntiAlias, verglichen mit einer einzelnen Pixel Linie.Anti-aliased line compared to single pixel line.

Wenn Sie Layoutrundung und Star Größe verwenden, erstellt das Layoutsystem kleine Variationen der Spalten-oder Zeilen Messungen, um das Rendering von Subpixeln zu vermeiden.When you use layout rounding and Star sizing, the layout system creates small variations in the column or row measurements to avoid subpixel rendering. Wenn ein Raster z. b. eine Gesamtbreite von 100 mit drei Spalten hat, die jeweils die Größe Star, anstatt drei Spalten zu erstellen, die eine gleich Breite von 33,3 haben, erstellt das Layoutsystem zwei Spalten mit einer Breite von 33 und einer mit einer Breite von 34.For example, if a grid has a total width of 100 with 3 columns each of size Star, instead of creating three columns that have an equal width of 33.3, the layout system creates 2 columns that have a width of 33 and one that has a width of 34.

Hinweis

In .NET 4,6 wurden Änderungen an der Layoutrundung vorgenommen, um die Instanzen von Clipping in Steuerelementen mit Rahmen zu verringern.In .NET 4.6 changes were made to layout rounding to reduce instances of clipping in controls with borders. Diese Funktion ist standardmäßig aktiviert, wenn das Ziel Framework .NET Framework 4,6 oder höher ist.By default, this feature is enabled if your Target Framework is .NET Framework 4.6 or higher. Anwendungen, die auf frühere Versionen des Frameworks abzielen, können das neue Verhalten abonnieren, indem Sie die folgende Einstellung zu einer App. config-Datei hinzufügen: <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime> die Einstellung wird nur wirksam, wenn die Anwendung auf .NET Framework 4,6 ausgeführt wird.Applications that target earlier versions of the framework can opt in into the new behavior by adding the following setting to an app.config file: <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime> The setting only takes effect when the application is running on the .NET Framework 4.6.

Gilt für: