Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Propiedad FrameworkElement.UseLayoutRounding

.NET Framework (current version)
 

Publicado: octubre de 2016

Obtiene o establece un valor que indica si el redondeo del diseño se debe aplicar a este tamaño y posición del elemento durante el diseño.

Espacio de nombres:   System.Windows
Ensamblado:  PresentationFramework (en PresentationFramework.dll)

public bool UseLayoutRounding { get; set; }

Valor de propiedad

Type: System.Boolean

true si se aplica el redondeo del diseño; en caso contrario, false. De manera predeterminada, es false.

Cuando el UseLayoutRounding es propiedad de un elemento true, todos los valores de píxel no enteros que se calculan durante el Measure y Arrange pasadas se redondean a valores de píxel enteros.

Esta propiedad es heredada por los elementos secundarios.

System_CAPS_noteNota

Debe establecer UseLayoutRounding a true en el elemento raíz. El sistema de diseño agrega coordenadas secundarias a las coordenadas primarias; por lo tanto, si las coordenadas primarias no están en un límite de píxeles, las coordenadas secundarias tampoco están en un límite de píxeles. Si UseLayoutRounding no se puede establecer en la raíz, establezca SnapsToDevicePixels en el elemento secundario para obtener el efecto que desee.

Dibujar objetos en los límites de píxeles elimina los perímetros semitransparentes generados por suavizado, cuando un borde cae en medio de un píxel de dispositivo. La siguiente ilustración muestra el resultado de una línea única de ancho de píxel que se encuentra en medio de un píxel de dispositivo. La línea de la izquierda no usa el redondeo de diseño y es AntiAlias. La línea de la derecha usa el redondeo del diseño.

Línea suavizada de contorno comparada con línea de un solo pixel.

Cuando se usa el redondeo del diseño y Star cambio de tamaño, el sistema de diseño crea variaciones pequeñas en las medidas de la columna o fila para evitar la representación de subpíxeles. Por ejemplo, si una cuadrícula tiene un ancho total de 100 con 3 columnas de tamaño Star, en lugar de crear tres columnas que tienen un ancho igual de 33,3, el sistema de diseño crea 2 columnas que tienen un ancho de 33 y que tiene un ancho de 34.

System_CAPS_noteNota

En .NET 4.6 se realizaron cambios al diseño de redondeo para reducir las instancias de recorte en los controles de los bordes. De forma predeterminada, esta característica está habilitada si su marco de destino es .NET Framework 4.6 o posterior. Las aplicaciones que tienen como destino versiones anteriores de framework pueden participar en el nuevo comportamiento agregando la siguiente configuración en un archivo app.config: <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime> la configuración sólo surte efecto cuando la aplicación se ejecuta en .NET Framework 4.6.

En el ejemplo siguiente se muestra el efecto que la UseLayoutRounding propiedad tiene en una línea única de ancho de píxel. La línea de la izquierda no usa el redondeo del diseño y la línea de la derecha usa el redondeo del diseño. Si cambia el tamaño de la ventana despacio, puede ver la diferencia que aporta el redondeo de diseño.


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

.NET Framework
Disponible desde 4.0
Volver al principio
Mostrar: