FrameworkElement.UseLayoutRounding Eigenschap

Definitie

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de indelingsronde moet worden toegepast op de grootte en positie van dit element tijdens de indeling.

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

Waarde van eigenschap

true indien de afronding van de indeling wordt toegepast; anders, false. De standaardwaarde is false.

Voorbeelden

In het volgende voorbeeld ziet u het effect dat de UseLayoutRounding eigenschap heeft op één pixelbreedtelijn. De lijn aan de linkerkant maakt geen gebruik van indelingsafronding en de lijn aan de rechterkant maakt gebruik van indelingsafronding. Als u het formaat van het venster langzaam wijzigt, ziet u het verschil dat de indelingsronding maakt.

<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>

Opmerkingen

Wanneer de UseLayoutRounding eigenschap voor een element is true, worden alle niet-integrale pixelwaarden die tijdens de Measure en Arrange pass worden berekend, afgerond op hele pixelwaarden.

Deze eigenschap wordt overgenomen door onderliggende elementen.

Note

U moet dit instellen UseLayoutRoundingtrue op het hoofdelement. Het indelingssysteem voegt onderliggende coördinaten toe aan de bovenliggende coördinaten; Dus als de bovenliggende coördinaten zich niet op een pixelgrens bevinden, bevinden de onderliggende coördinaten zich ook niet op een pixelgrens. Als UseLayoutRounding het niet in de hoofdmap kan worden ingesteld, stelt SnapsToDevicePixels u het kind in om het gewenste effect te verkrijgen.

Als u objecten tekent op pixelgrenzen, worden de semitransparante randen verwijderd die worden geproduceerd door antialiassen, wanneer een rand midden in een apparaat pixel valt. In de volgende afbeelding ziet u de uitvoer van een lijn met één pixelbreedte die in het midden van een apparaat pixel valt. De regel aan de linkerkant maakt geen gebruik van lay-outafronding en is antialiased. De lijn aan de rechterkant maakt gebruik van indelingsronding.

Antialiaslijn vergeleken met één pixellijn.

Wanneer u indelingsafronding en Star -grootte gebruikt, maakt het indelingssysteem kleine variaties in de kolom- of rijmetingen om sub pixelweergave te voorkomen. Als een raster bijvoorbeeld een totale breedte van 100 heeft met elk drie kolommen Star, in plaats van drie kolommen te maken met een gelijke breedte van 33.3, worden in het indelingssysteem 2 kolommen gemaakt met een breedte van 33 en een kolom met een breedte van 34.

Note

In .NET 4,6 zijn wijzigingen aangebracht in de indelingsronde om het aantal knipsels in besturingselementen met randen te verminderen. Deze functie is standaard ingeschakeld als uw Target Framework .NET Framework 4.6 of hoger is. Toepassingen waarop eerdere versies van het framework zijn gericht, kunnen zich aanmelden voor het nieuwe gedrag door de volgende instelling toe te voegen aan een app.config-bestand: <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime> De instelling wordt alleen van kracht wanneer de toepassing wordt uitgevoerd op de .NET Framework 4.6.

Van toepassing op