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

Définition

Obtient ou définit une valeur qui indique si l’arrondi pour la disposition doit être appliqué à la taille et la position de cet élément lors de la disposition.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

Valeur de propriété

true si l’arrondi pour la disposition est appliqué ; sinon, false.true if layout rounding is applied; otherwise, false. La valeur par défaut est false.The default is false.

Exemples

L’exemple suivant illustre l’effet qui le UseLayoutRounding a de propriété sur une ligne unique-largeur en pixels.The following example demonstrates the effect that the UseLayoutRounding property has on a single pixel-width line. La ligne sur la gauche n’utilise pas l’arrondi de disposition et la ligne sur la droite utilise l’arrondi de disposition.The line on the left does not use layout rounding and the line on the right uses layout rounding. Si vous redimensionnez la fenêtre lentement, vous pouvez voir la différence qu’arrondi de disposition fait.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>  

Remarques

Lorsque le UseLayoutRounding propriété pour un élément est true, toutes les valeurs de pixel non intégrales sont calculées lors de la Measure et Arrange passes sont arrondies à des valeurs en pixels entières.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.

Cette propriété est héritée par les éléments enfants.This property is inherited by child elements.

Notes

Vous devez définir UseLayoutRounding à true sur l’élément racine.You should set UseLayoutRounding to true on the root element. Le système de disposition ajoute des coordonnées enfants aux coordonnées parent ; Par conséquent, si les coordonnées du parent ne sont pas sur une limite de pixel, les coordonnées enfants sont également pas sur une limite de pixel.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. Si UseLayoutRounding ne peut pas être défini à la racine, définissez SnapsToDevicePixels sur l’enfant pour obtenir l’effet souhaité.If UseLayoutRounding cannot be set at the root, set SnapsToDevicePixels on the child to obtain the effect that you want.

Dessiner des objets sur les limites des pixels élimine les bords semi transparentes qui sont produites par l’anticrénelage lorsqu’un bord se trouve au milieu d’un pixel de périphérique.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. L’illustration suivante montre la sortie d’une ligne unique de largeur de pixels qui se trouve au milieu d’un pixel de périphérique.The following illustration shows the output of a single pixel-width line that falls in the middle of a device pixel. La ligne sur la gauche n’utilise pas l’arrondi de disposition et est lissé.The line on the left does not use layout rounding and is anti-aliased. La ligne sur la droite utilise l’arrondi de disposition.The line on the right uses layout rounding.

Anti-ligne possède un alias par rapport à la ligne d’un pixel unique. Anti-aliased line compared to single pixel line.

Lorsque vous utilisez l’arrondi de disposition et Star de dimensionnement, le système de disposition crée de petites variations dans les mesures de colonne ou une ligne pour éviter le rendu de sous-pixel.When you use layout rounding and Star sizing, the layout system creates small variations in the column or row measurements to avoid subpixel rendering. Par exemple, si une grille a une largeur totale de 100 avec 3 colonnes de taille Star, au lieu de créer trois colonnes qui ont une largeur égale de 33,3, le système de disposition crée 2 colonnes qui ont une largeur de 33 et qui a une largeur de 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.

Notes

Dans .NET 4.6 les modifications ont été apportées à l’arrondi de disposition pour réduire les instances de découpage dans les contrôles avec bordures.In .NET 4.6 changes were made to layout rounding to reduce instances of clipping in controls with borders. Par défaut, cette fonctionnalité est activée si votre version de Framework cible .NET Framework 4.6 ou ultérieure.By default, this feature is enabled if your Target Framework is .NET Framework 4.6 or higher. Les applications qui ciblent des versions antérieures du framework peuvent choisir dans le nouveau comportement en ajoutant le paramètre suivant dans un fichier app.config : <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime> Le paramètre prend uniquement effet lors de l’application est en cours d’exécution sur le .NET Framework 4.6.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.

S’applique à