我遇到了一个相当奇怪的WPF问题。当我在一个表单上放置按钮时,它们在设计时看起来很好,它们在Windows XP上看起来很好但是当应用程序在Windows 7上运行时,边缘会破碎。
这是正常图标的屏幕截图(XP和设计时间)
这里有一个破边(窗口7)
有什么想法吗?
编辑:
这里要求的是我用于按钮的代码
<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>
答案 0 :(得分:2)
也许与此相关? 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>