FrameworkElement.UseLayoutRounding 속성

정의

레이아웃 중에 이 요소의 크기와 위치에 레이아웃 반올림을 적용해야 하는지를 표시하는 값을 가져오거나 설정합니다.Gets or sets a value that indicates whether layout rounding should be applied to this element's size and position during layout.

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

속성 값

레이아웃 반올림이 적용되는 경우 true이고, 그렇지 않은 경우 false입니다.true if layout rounding is applied; otherwise, false. 기본값은 false입니다.The default is false.

예제

다음 예제에서는 UseLayoutRounding 속성이 단일 픽셀 너비 선에 미치는 영향을 보여 줍니다.The following example demonstrates the effect that the UseLayoutRounding property has on a single pixel-width line. 왼쪽의 줄은 레이아웃 반올림을 사용 하지 않으며 오른쪽의 줄은 레이아웃 반올림을 사용 합니다.The line on the left does not use layout rounding and the line on the right uses layout rounding. 창의 크기를 천천히 조정 하면 레이아웃 반올림이 수행 하는 차이를 확인할 수 있습니다.If you slowly resize the window, you can see the difference that layout rounding makes.

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

설명

요소에 대 한 UseLayoutRounding 속성이 true경우 MeasureArrange 패스 중에 계산 되는 모든 비정 수 픽셀 값은 전체 픽셀 값으로 반올림 됩니다.When the UseLayoutRounding property for an element is true, all non-integral pixel values that are calculated during the Measure and Arrange passes are rounded to whole pixel values.

이 속성은 자식 요소에 의해 상속 됩니다.This property is inherited by child elements.

참고

Root 요소에서 UseLayoutRoundingtrue으로 설정 해야 합니다.You should set UseLayoutRounding to true on the root element. 레이아웃 시스템은 자식 좌표를 부모 좌표에 추가 합니다. 따라서 부모 좌표가 픽셀 경계에 있지 않은 경우에는 자식 좌표도 픽셀 경계에 있지 않습니다.The layout system adds child coordinates to the parent coordinates; therefore, if the parent coordinates are not on a pixel boundary, the child coordinates are also not on a pixel boundary. 루트에 UseLayoutRounding을 설정할 수 없는 경우 자식에 SnapsToDevicePixels를 설정 하 여 원하는 효과를 얻을 수 있습니다.If UseLayoutRounding cannot be set at the root, set SnapsToDevicePixels on the child to obtain the effect that you want.

픽셀 경계에 개체를 그리기는 지 디바이스 픽셀 가운데 떨어질 때 앤티 앨리어싱으로 인해 생성 되는 반투명 가장자리를 제거 합니다.Drawing objects on pixel boundaries eliminates the semi-transparent edges that are produced by anti-aliasing, when an edge falls in the middle of a device pixel. 다음 그림에서는 디바이스 픽셀 가운데에 있는 단일 픽셀 너비 줄의 출력을 보여줍니다.The following illustration shows the output of a single pixel-width line that falls in the middle of a device pixel. 왼쪽의 줄은 레이아웃 반올림을 사용 하지 않으며 앤티 앨리어싱된입니다.The line on the left does not use layout rounding and is anti-aliased. 오른쪽의 줄에서 레이아웃 반올림을 사용 합니다.The line on the right uses layout rounding.

단일-픽셀 선에 비해 앤티 앨리어싱된 줄입니다.Anti-aliased line compared to single pixel line.

레이아웃 반올림 및 Star 크기 조정을 사용 하는 경우 하위 픽셀 렌더링을 방지 하기 위해 레이아웃 시스템은 열 또는 행 측정에 작은 변형을 만듭니다.When you use layout rounding and Star sizing, the layout system creates small variations in the column or row measurements to avoid subpixel rendering. 예를 들어 표의 너비가 100 인 열이 각각 Star크기가 인 열이 모두 있는 경우 너비가 33.3 인 3 개의 열을 생성 하는 대신, 레이아웃 시스템에서는 너비가 33이 고 너비가 34 인 2 개의 열을 만듭니다.For example, if a grid has a total width of 100 with 3 columns each of size Star, instead of creating three columns that have an equal width of 33.3, the layout system creates 2 columns that have a width of 33 and one that has a width of 34.

참고

.NET 4.6에서는 테두리가 있는 컨트롤의 클리핑 인스턴스를 줄이기 위해 레이아웃 반올림을 변경 했습니다.In .NET 4.6 changes were made to layout rounding to reduce instances of clipping in controls with borders. 기본적으로이 기능은 대상 프레임 .NET Framework 워크가 4.6 이상인 경우에만 사용할 수 있습니다.By default, this feature is enabled if your Target Framework is .NET Framework 4.6 or higher. 이전 버전의 framework 대상으로 하는 애플리케이션 app.config 파일에 다음 설정을 추가 하 여를 새 동작을 옵트인 수: <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime> 애플리케이션은.NET Framework 4.6에서 실행 중일 때만 하면 설정이 적용 됩니다.Applications that target earlier versions of the framework can opt in into the new behavior by adding the following setting to an app.config file: <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime> The setting only takes effect when the application is running on the .NET Framework 4.6.

적용 대상