FrameworkElement.UseLayoutRounding Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví hodnotu, která označuje, zda má být rozložení zaokrouhlení použito na velikost a pozici tohoto prvku během rozložení.
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
Hodnota vlastnosti
true
je-li použito zaokrouhlení rozložení; false
v opačném případě . Výchozí formát je false
.
Příklady
Následující příklad ukazuje účinek, že UseLayoutRounding vlastnost má na jednom pixel-width line. Čára vlevo nepoužívá zaokrouhlení rozložení a čára vpravo používá zaokrouhlování rozložení. Pokud pomalu změníte velikost okna, uvidíte rozdíl, který dělá zaokrouhlení rozložení.
<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>
Poznámky
UseLayoutRounding Pokud je true
vlastnost prvku , všechny nenedílnou pixelové hodnoty, které jsou vypočteny během Measure a Arrange průchodu, jsou zaokrouhleny na celé pixelové hodnoty.
Tato vlastnost je zděděna podřízenými prvky.
Poznámka
Měli byste nastavit UseLayoutRounding na true
kořenový prvek. Systém rozložení přidá podřízené souřadnice do nadřazených souřadnic; proto pokud nadřazené souřadnice nejsou na hranici pixelu, podřízené souřadnice nejsou také na hranici pixelu. Pokud UseLayoutRounding nelze nastavit v kořenovém adresáři, nastavte SnapsToDevicePixels u podřízeného objektu, abyste získali požadovaný efekt.
Nakreslené objekty na hranicích pixelů eliminují poloprůhledné okraje, které jsou vytvořeny anti-aliasingem, když hrana spadá doprostřed pixelu zařízení. Následující obrázek znázorňuje výstup jedné čáry šířky pixelu, která spadá doprostřed pixelu zařízení. Čára vlevo nepoužívá zaokrouhlení rozložení a je anti-aliased. Čára vpravo používá zaokrouhlení rozložení.
Když používáte zaokrouhlení a Star změnu velikosti rozložení, systém rozložení vytvoří malé variace v měření sloupců nebo řádků, aby se zabránilo vykreslování subpixelu. Pokud má například mřížka celkovou šířku 100 se 3 sloupci každé velikosti Star, místo vytvoření tří sloupců, které mají stejnou šířku 33,3, vytvoří systém rozložení 2 sloupce, které mají šířku 33 a jeden, který má šířku 34.
Poznámka
V .NET 4.6 byly provedeny změny rozložení zaokrouhlení, aby se snížily výskyty výřezů v ovládacích prvcích s ohraničením. Tato funkce je ve výchozím nastavení povolená, pokud je vaše cílová architektura rozhraní .NET Framework 4.6 nebo vyšší. Aplikace, které cílí na dřívější verze architektury, se můžou přihlásit k novému chování přidáním následujícího nastavení do souboru app.config: <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime>
Toto nastavení se projeví jenom v případě, že aplikace běží na rozhraní .NET Framework 4.6.