FrameworkElement.UseLayoutRounding FrameworkElement.UseLayoutRounding FrameworkElement.UseLayoutRounding FrameworkElement.UseLayoutRounding Property

정의

레이아웃 중에 이 요소의 크기와 위치에 레이아웃 반올림을 적용해야 하는지를 표시하는 값을 가져오거나 설정합니다.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.

참고

설정 해야 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. 예를 들어 눈금 크기의 3 개의 열을 사용 하 여 100의 전체 너비에 Star된 33.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.

적용 대상