圆角周围的视觉腐败

时间:2012-02-06 10:31:06

标签: wpf

在我的WPF应用程序中,我看到这些涂抹般的视觉腐败,特别是在圆角处。注意按钮上角的问题。

visual corruption in upper corners

我尝试了以下但问题仍然存在:

  • SnapToDevicePixels =真
  • 调整并移动了应用程序窗口。
  • 更改了屏幕分辨率

可能导致这种情况的原因是什么?

按钮的XAML:

<Button Width="Auto" Click="btnAdd_Click" Height="Auto" x:Name="btnAdd"  VerticalAlignment="Center" HorizontalAlignment="Right" Focusable="False" Margin="20,0,0,0" SnapsToDevicePixels="True">
            <StackPanel Orientation="Horizontal" Margin="0">
                <TextBlock Text="Ekle" HorizontalAlignment="Center" VerticalAlignment="Center"  Margin="0,0,5,0"/>
                <Image Source="/FideKiosk;component/Icons/right.png" MaxWidth="30" Width="15" Height="15"/>
            </StackPanel>
        </Button>

然后我在Application.Resources中有一个隐式样式:

<Style TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid x:Name="grid">
                        <Rectangle RadiusX="10" RadiusY="10" x:Name="rectangle" Opacity="0.995">
                            <Rectangle.Effect>
                                <DropShadowEffect ShadowDepth="0" BlurRadius="0" Color="#FFC0F3AD" Opacity="0"/>
                            </Rectangle.Effect>
                            <Rectangle.Fill>
                                <LinearGradientBrush EndPoint="0.501,0.039" StartPoint="0.501,0.971">
                                    <GradientStop Color="#FF346223" Offset="0.124" />
                                    <GradientStop Color="#FF325625" Offset="0.526" />
                                    <GradientStop Color="#FF39622B" Offset="0.534" />
                                    <GradientStop Color="#FF367021" Offset="0" />
                                    <GradientStop Color="#FF4A8535" Offset="0.986" />
                                </LinearGradientBrush>
                            </Rectangle.Fill>
                        </Rectangle>
                        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True" Margin="15" />
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Opacity" TargetName="grid" Value="0.5"/>
                        </Trigger>
                        <Trigger Property="IsMouseCaptureWithin" Value="True">
                            <Setter Property="Effect" TargetName="rectangle">
                                <Setter.Value>
                                    <DropShadowEffect BlurRadius="30" Color="#FFC0F3AD" Opacity="1" ShadowDepth="0"/>
                                </Setter.Value>
                            </Setter>
                            <Setter Property="Fill" TargetName="rectangle">
                                <Setter.Value>
                                    <LinearGradientBrush EndPoint="0.501,0.039" StartPoint="0.501,0.971">
                                        <GradientStop Color="#FF346223" Offset="0.303"/>
                                        <GradientStop Color="#FF325625" Offset="0.526"/>
                                        <GradientStop Color="#FF39622B" Offset="0.534"/>
                                        <GradientStop Color="#FF4A8535" Offset="0"/>
                                        <GradientStop Color="#FF8AC077" Offset="0.986"/>
                                    </LinearGradientBrush>
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

1 个答案:

答案 0 :(得分:1)

我使用了您的代码,在设计人员和运行应用程序时都找不到任何工件。因此,除非您有更多不在代码中的UI元素,否则您的猜测是机器上的图形卡(硬件/驱动程序)导致此问题。

您可以通过切换到软件渲染来测试:Can I force WPF rendering tier?