FrameworkElement.UseLayoutRounding Özellik

Tanım

Düzen yuvarlamanın düzen sırasında bu öğenin boyutuna ve konumuna uygulanıp uygulanmayacağını belirten bir değer alır veya ayarlar.

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

Özellik Değeri

Boolean

true düzen yuvarlama uygulanmışsa; aksi takdirde , false. Varsayılan değer: false.

Örnekler

Aşağıdaki örnek, özelliğin UseLayoutRounding tek bir piksel genişlikli çizgi üzerindeki etkisini gösterir. Soldaki çizgi düzen yuvarlama kullanmaz ve sağdaki çizgi de düzen yuvarlama kullanır. Pencereyi yavaşça yeniden boyutlandırdığınızda, düzen yuvarlamanın farkını görebilirsiniz.

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

Açıklamalar

UseLayoutRounding Bir öğenin özelliği olduğundatrue, ve Arrange geçişleri sırasında Measure hesaplanan tüm integral olmayan piksel değerleri, tüm piksel değerlerine yuvarlanir.

Bu özellik alt öğeler tarafından devralınır.

Not

Kök öğesinde olarak true ayarlamalısınızUseLayoutRounding. Düzen sistemi üst koordinatlara alt koordinatlar ekler; bu nedenle, üst koordinatlar bir piksel sınırında değilse, alt koordinatlar da bir piksel sınırında değildir. Kökte ayarlanamıyorsa UseLayoutRounding , istediğiniz etkiyi elde etmek için alt öğede ayarlayın SnapsToDevicePixels .

Piksel sınırlarına nesne çizmek, kenar bir cihaz pikselinin ortasına düştüğünde kenar yumuşatma tarafından üretilen yarı saydam kenarları ortadan kaldırır. Aşağıdaki çizimde, bir cihaz pikselinin ortasına düşen tek piksel genişlikli bir çizginin çıkışı gösterilmektedir. Soldaki çizgi düzen yuvarlama kullanmaz ve diğer adlara karşı kullanılır. Sağdaki çizgide düzen yuvarlama kullanılır.

Tek piksel çizgiyle karşılaştırıldığında diğer-karşıt çizgi.

Düzen yuvarlama ve Star boyutlandırma kullandığınızda, düzen sistemi alt piksel işlemeyi önlemek için sütun veya satır ölçülerinde küçük çeşitlemeler oluşturur. Örneğin, bir kılavuzun genişliği her biri 3 sütun Starolan toplam genişliği 100 ise, eşit genişlikte 33,3 olan üç sütun oluşturmak yerine, düzen sistemi 33 ve genişliği 34 olan 2 sütun oluşturur.

Not

.NET 4.6'da, kenarlıklı denetimlerdeki kırpma örneklerini azaltmak için düzen yuvarlamada değişiklikler yapıldı. Hedef Çerçeveniz 4.6 veya üzeri .NET Framework bu özellik varsayılan olarak etkindir. Çerçevenin önceki sürümlerini hedefleyen uygulamalar, bir app.config dosyasına aşağıdaki ayarı ekleyerek yeni davranışı kabul edebilir: <runtime><AppContextSwitchOverrides value="Switch.MS.Internal.DoNotApplyLayoutRoundingToMarginsAndBorderThickness=false"/></runtime> Bu ayar yalnızca uygulama .NET Framework 4.6'da çalışırken geçerlilik kazanır.

Şunlara uygulanır