다음을 통해 공유


FrameworkElement.UseLayoutRounding 속성

정의

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

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

속성 값

Boolean

레이아웃 반올림이 적용되는 경우 true이고, 그렇지 않은 경우 false입니다. 기본값은 false입니다.

예제

다음 예제에서는 속성이 UseLayoutRounding 단일 픽셀 너비 선에 미치는 영향을 보여 줍니다. 왼쪽 줄은 레이아웃 반올림을 사용하지 않으며 오른쪽 줄은 레이아웃 반올림을 사용합니다. 창의 크기를 천천히 조정하면 레이아웃 반올림의 차이를 확인할 수 있습니다.

<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전달 중에 Measure Arrange 계산되는 모든 비정수 픽셀 값이 전체 픽셀 값으로 반올림됩니다.

이 속성은 자식 요소에 의해 상속됩니다.

참고

루트 요소에 대해 설정 UseLayoutRounding true 해야 합니다. 레이아웃 시스템은 부모 좌표에 자식 좌표를 추가합니다. 따라서 부모 좌표가 픽셀 경계에 없는 경우 자식 좌표도 픽셀 경계에 있지 않습니다. 루트에서 설정할 수 없는 경우 UseLayoutRounding 자식에 설정 SnapsToDevicePixels 하여 원하는 효과를 얻습니다.

픽셀 경계에 개체를 그리기는 지 디바이스 픽셀 가운데 떨어질 때 앤티 앨리어싱으로 인해 생성 되는 반투명 가장자리를 제거 합니다. 다음 그림에서는 디바이스 픽셀 가운데에 있는 단일 픽셀 너비 줄의 출력을 보여줍니다. 왼쪽 줄은 레이아웃 반올림을 사용하지 않으며 앤티앨리어싱됩니다. 오른쪽 줄은 레이아웃 반올림을 사용합니다.

단일 픽셀 선에 비해 앤티-별칭이 지정된 선입니다.

레이아웃 반올림 및 Star 크기 조정을 사용하는 경우 레이아웃 시스템은 하위 픽셀 렌더링을 방지하기 위해 열 또는 행 측정값에 작은 변형을 만듭니다. 예를 들어 눈금의 너비가 100이고 각 크기의 Star열이 3개인 경우 너비가 33.3인 열 3개를 만드는 대신 레이아웃 시스템은 너비가 33이고 너비가 34인 열 2개를 만듭니다.

참고

.NET 4.6에서는 테두리가 있는 컨트롤의 클리핑 인스턴스를 줄이기 위해 레이아웃 반올림을 변경했습니다. 기본적으로 대상 프레임워크가 .NET Framework 4.6 이상인 경우 이 기능을 사용하도록 설정됩니다. 이전 버전의 framework 대상으로 하는 애플리케이션 app.config 파일에 다음 설정을 추가 하 여를 새 동작을 옵트인 수: <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime> 애플리케이션은.NET Framework 4.6에서 실행 중일 때만 하면 설정이 적용 됩니다.

적용 대상