WPF断边

时间:2011-10-03 14:45:52

标签: wpf wpf-controls

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

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

这里有一个破边(窗口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>

1 个答案:

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