2015-06-24 22 views
0

我遇到了一个很奇怪的问题。在WPF中,当追加一个usercontrol到边框时,它看起来不清晰

<Grid> 
    <Border x:Name="C01" VerticalAlignment="Center" Panel.ZIndex="2" HorizontalAlignment="Center" /> 
</Grid> 

Border'C01',我用它来显示UserControl。像这样的:

<UserControl x:Class="Nwp.UserComponents.ULogin" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     Width="350" Height="220"> 
    <Grid> 
     <Border Margin="10" BorderBrush="DimGray" BorderThickness="1" Background="White"> 
      <Border.Effect> 
       <DropShadowEffect ShadowDepth="0" BlurRadius="10"/> 
      </Border.Effect> 
      <Grid> 
       ... here's content 
      </Grid> 
     </Border> 
    </Grid> 
</UserControl> 

我这个用户控件添加到边境 'C01' 这样的:

C01.Child = new ULogin(); 

到目前为止,一切都很好,看起来是这样的:

Looks good

公告usercontrol的宽度和高度是2个复数:350 & 220. 如果其中一个我更改为单数,UserControl当我再次使用复数

Width 351

:显示有点模糊330x200,无残影:

330x200

使用单数330x201,再次模糊:

330x201

我相信这超出了我的能力,所以任何人都知道如何解决这个?

回答

3

你只需要设置UIElement.SnapsToDevicePixels propertyBorderTrue

<Border Margin="10" BorderBrush="DimGray" BorderThickness="1" Background="White" 
     SnapsToDevicePixels="True"> 
     <Border.Effect> 
      <DropShadowEffect ShadowDepth="0" BlurRadius="10"/> 
     </Border.Effect> 
     <Grid> 
      ... here's content 
     </Grid> 
    </Border> 

从MSDN上的链接页面:

获取或设置确定是否渲染这个元素的值应该在渲染过程中使用设备特定的像素设置。

...

对于在大于每英寸96个点(dpi)的操作的装置,像素卡扣渲染可以最小化抗混叠在单单元实线附近的视觉伪影。

+0

hi @Sheridan,我试图把SnapsToDevicePixels =“True”放到边界,根元素甚至usercontrol元素中,不起作用。 –

+0

尝试'TextOptions.TextFormattingMode =“显示”'我相信这至少需要.net 4.0。 –

相关问题