2011-10-03 50 views
2

我遇到了一个WPF相当奇怪的问题。当我在窗体上放置按钮时,它们在设计时看起来很好,但在Windows XP上看起来很好,但是当应用程序在Windows 7上运行时,边缘会变得破损。WPF断边

这是正常的图标的屏幕截图(XP和设计时间) Normal Edges

这里是一个用破碎的边缘(Windows 7)中 Broken Edges

任何想法?

编辑:

如这里要求是我使用的按钮

<Button Height="38" HorizontalAlignment="Center" Name="cmdChange_dataset" VerticalAlignment="Center" Width="130" Grid.Column="0" > 
       <Grid Width="120"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="auto"/> 
         <ColumnDefinition Width="*"/> 

        </Grid.ColumnDefinitions> 
        <Image Source="/Sales_express_lite_WPF;component/Images/note_to_self_32.png" Stretch="None" Grid.Column="0" HorizontalAlignment="Left"/> 
        <Label Content="Change DataSet" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       </Grid> 
       <Button.Effect> 
        <DropShadowEffect BlurRadius="5" Color="Gray" /> 
       </Button.Effect> 
      </Button> 
+4

你能发布你的Button的XAML代码吗? – Rachel

+0

@Rachel代码示例添加到原来的帖子,思考它我应该张贴在第一位 –

+0

也许与此有关? http://blogs.msdn.com/b/text/archive/2009/08/27/layout-rounding.aspx –

回答

1

也许代码与此有关?从博客文章 Layout Rounding on the WPF Text Blog

摘要:

WPF的布局引擎经常给人元素的子像素位置。抗锯齿算法使得这些子像素定位元素在过滤之后被渲染到多个物理像素上。这可能会导致模糊的线条和其他不理想的渲染伪影。在WPF 4.0中引入了布局舍入,允许开发人员强制WPF布局系统在像素边界上定位元素,消除了亚像素定位的许多负面影响。

附加属性UseLayoutRounding已被引入到允许对切换或关闭布局舍入功能。 该属性可以是True或False。该属性的值由元素的子元素继承。

<Grid UseLayoutRounding="True" Height="100" Width="200"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Rectangle Grid.Row="0" Fill="DarkBlue"/> 
    <Rectangle Grid.Row="1" Fill="DarkBlue"/> 
    <Rectangle Grid.Row="2" Fill="DarkBlue"/> 
</Grid> 
+1

你可以在这里总结这个博客 - 它有助于防止URL发生变化。 – ChrisF