【问题标题】:Visual corruption around rounded corners圆角周围的视觉损坏
【发布时间】:2012-02-06 19:06:20
【问题描述】:

在我的 WPF 应用程序中,我看到了这些类似涂抹的视觉损坏,尤其是在圆角附近。注意按钮上角的问题。

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

  • SnapToDevicePixels=true
  • 调整大小并移动应用窗口。
  • 更改了屏幕分辨率

这可能是什么原因?

按钮的 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>

【问题讨论】:

    标签: wpf


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。如果我通过设置 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration = 1 禁用硬件加速,问题就会消失。那么现在的程序是什么? :) 更新显卡驱动,如果不行,换个新卡? :)
    猜你喜欢
    • 2013-07-28
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    相关资源
    最近更新 更多