FrameworkElement.UseLayoutRounding Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.
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
. La valeur par défaut est false
.
Exemples
L’exemple suivant illustre l’effet que la UseLayoutRounding propriété a sur une seule ligne de largeur de pixel. La ligne de gauche n’utilise pas d’arrondi de disposition et la ligne à droite utilise l’arrondi de disposition. Si vous redimensionnez lentement la fenêtre, vous pouvez voir la différence que fait l’arrondi de disposition.
<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 la UseLayoutRounding propriété d’un élément est true
, toutes les valeurs de pixels non intégrales calculées pendant le Measure passage Arrange sont arrondies à des valeurs de pixel entières.
Cette propriété est héritée par les éléments enfants.
Notes
Vous devez définir UseLayoutRounding true
sur l’élément racine. Le système de disposition ajoute des coordonnées enfants aux coordonnées parentes ; Par conséquent, si les coordonnées parentes ne se trouvent pas sur une limite de pixels, les coordonnées enfants ne se trouvent pas non plus sur une limite de pixels. Si UseLayoutRounding vous ne pouvez pas définir à la racine, définissez SnapsToDevicePixels sur l’enfant pour obtenir l’effet souhaité.
Le dessin d’objets sur les limites de pixels élimine les bords semi-transparents générés par l’anticrénelage, lorsqu’un bord tombe au milieu d’un pixel d’appareil. L’illustration suivante montre la sortie d’une seule ligne de largeur de pixel qui tombe au milieu d’un pixel d’appareil. La ligne de gauche n’utilise pas d’arrondi de disposition et est anticrénelée. La ligne à droite utilise l’arrondi de disposition.
Lorsque vous utilisez l’arrondi et Star le dimensionnement de la disposition, le système de disposition crée de petites variations dans les mesures de colonne ou de ligne pour éviter le rendu de sous-pixel. Par exemple, si une grille a une largeur totale de 100 avec 3 colonnes chacune de la taille Star, au lieu de créer trois colonnes ayant une largeur égale de 33,3, le système de disposition crée 2 colonnes ayant une largeur de 33 et une largeur de 34.
Notes
Dans .NET 4.6, des modifications ont été apportées à l’arrondi de disposition pour réduire les instances de découpage dans les contrôles avec des bordures. Par défaut, cette fonctionnalité est activée si votre Framework cible est .NET Framework 4.6 ou version ultérieure. Les applications qui ciblent des versions antérieures du framework peuvent accepter le nouveau comportement en ajoutant le paramètre suivant à un fichier app.config : <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime>
le paramètre prend effet uniquement lorsque l’application s’exécute sur le .NET Framework 4.6.