Sdílet prostřednictvím


FrameworkElement.UseLayoutRounding Vlastnost

Definice

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

Boolean

true je-li použito zaokrouhlení rozložení; falsev 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 truevlastnost 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í.

Anti-aliased line ve srovnání s jednou pixelovou čárou.

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.

Platí pro