FrameworkElement.UseLayoutRounding FrameworkElement.UseLayoutRounding FrameworkElement.UseLayoutRounding FrameworkElement.UseLayoutRounding Property

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

Das folgende Beispiel veranschaulicht die Auswirkungen, die die UseLayoutRounding Eigenschaft, die in einer Zeile für die einzelnen Pixel Breite verfügt.The following example demonstrates the effect that the UseLayoutRounding property has on a single pixel-width line. Die Zeile, auf der linken Seite verwendet nicht die layoutglättung und der Zeile auf der rechten Seite wird verwendet, die layoutglättung.The line on the left does not use layout rounding and the line on the right uses layout rounding. Wenn langsam der Fenstergröße ändern, können Sie sich, dem Unterschied, layoutglättung ist sehen.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 ist true, alle nicht-integrale Pixelwerte, die während der berechnet werden die Measure und Arrange übergibt auf ganze Pixelwerte gerundet werden.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 festlegen UseLayoutRounding zu true für das Stammelement.You should set UseLayoutRounding to true on the root element. Das Layoutsystem hinzugefügt die übergeordneten Koordinaten untergeordneten Koordinaten; aus diesem Grund, wenn die übergeordneten Koordinaten nicht an einer Pixelgrenze sind, sind die untergeordneten Koordinaten auch nicht auf einer Pixelgrenze.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 kann nicht auf der Stammebene festlegen, legen SnapsToDevicePixels für das untergeordnete Element, um die Auswirkungen zu erhalten, die Sie möchten.If UseLayoutRounding cannot be set at the root, set SnapsToDevicePixels on the child to obtain the effect that you want.

Zeichnen von Objekten auf Pixelgrenzen entfällt die teilweise transparenten Kanten, die von Antialiasing verwendet wird, erstellt werden, in der Mitte eines Gerätepixels fällt eine Kante.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 Pixel Breite-Zeile, die in der Mitte eines Gerätepixels liegt.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 nicht die layoutglättung und Antialiasing wird.The line on the left does not use layout rounding and is anti-aliased. Die Zeile auf der rechten Seite wird die layoutglättung verwendet.The line on the right uses layout rounding.

Anti-Alias-Zeile, die im Vergleich mit. Anti-aliased line compared to single pixel line.

Bei Verwendung von layoutglättung und Star Festlegen der Größe des Layoutsystems erstellt kleine abweichungen in der Spalte oder Zeile Messungen werden an die Subpixelrendering 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. Beispielsweise wenn ein Raster eine Gesamtbreite von mit 3 Spalten von der Größe 100 Starhaben, statt drei Spalten, die gleiche Breite von 33,3, erstellt das Layoutsystem 2 Spalten, die eine Breite von 33 und eine, die eine von 34 Breite.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 layoutglättung um Instanzen von Clipping in Steuerelementen mit Begrenzungen zu reduzieren.In .NET 4.6 changes were made to layout rounding to reduce instances of clipping in controls with borders. Dieses Feature ist standardmäßig aktiviert, wenn Ihr Zielframework .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 in das neue Verhalten entscheiden, indem eine app.config-Datei die folgende Einstellung hinzugefügt: <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: