我如何在代码中知道RadialGradientBrush是否显示不正确?

时间:2019-06-10 04:15:54

标签: uwp radialgradientbrush

我正在使用RadialGradientBrush作为Button的背景。 在一台计算机上,它运行良好。 另一方面,背景是透明的。

NewComputer:Intel i7-8700、16Gb ram,64位操作系统,图形-Nvidia GeForce GTx1050Ti

OldComputer:Intel 6300、2Gb ram,32位操作系统,图形-Intel G965 Express芯片组家族

两台计算机都运行Windows 10 Home,1809(17763.503),1920x1080显示器。

在每台计算机上运行相同的程序(如下所示),我没有让RadialGradientBrush出现在OldComputer上。 RadialGradientBrush处于活动状态-我可以从GradientStop 1获取颜色,并将其用作背景的SolidColorBrush。

LinearGradientBrush将正确显示在OldComputer上。

G965的驱动程序从2012年开始,是最新的驱动程序。我想问题是这个旧的G965图形,尽管我对此不是很肯定。

这是程序中唯一的代码。除了默认代码外,没有其他代码。

<Page
    x:Class="RadialGradientBrush_Test.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:RadialGradientBrush_Test"
    xmlns:media="using:Microsoft.Toolkit.Uwp.UI.Media"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Page.Resources>
        <!-- Radial Brush -->
        <media:RadialGradientBrush x:Key="MyRadialBrush"
            GradientOrigin="0.5,0.5" Center="0.5,0.5"
            RadiusX="0.5" RadiusY="0.5" FallbackColor="Red">
            <GradientStop Color="#FFF0F8FF" Offset="0" />
            <GradientStop Color="#FF1E90FF" Offset="1" />
        </media:RadialGradientBrush>

    </Page.Resources>

    <Grid>
        <Button Content="Test" Background="{StaticResource MyRadialBrush}"
            HorizontalAlignment="Center" BorderBrush="Black"
            BorderThickness="1"/>
    </Grid>
</Page>

NewComputer:

Image from NewComputer

OldComputer:

Image from OldComputer

我有一种解决方法,即在按钮后面放置一个边框,该边框与按钮的形状相同,并填充后备纯色。

我宁愿在代码中找到一种方法来知道是否要显示RadialGradientBrush,然后将按钮背景更改为SolidColorBrush,也许是看图形系统的功能?
从概念上讲,类似于Graphics.Capabilities.RadialGradientBrush。
有什么主意吗?

编辑1:在OldComputer中使用图形卡-现在可以显示RadialGradientBrush。似乎是G965图形。 我使用WindowsCommunityToolkit在此问题上提出了问题。

1 个答案:

答案 0 :(得分:0)

  

我宁愿在代码中找到一种方法来知道是否要显示RadialGradientBrush,然后将按钮背景更改为SolidColorBrush,也许是看图形系统的功能?

RadialGradientBrush类具有FallbackColor属性。在无法渲染CompositionBrush时用于渲染的颜色。符合您的要求。

<media:RadialGradientBrush x:Key="MyRadialBrush"
        GradientOrigin="0.5,0.5" Center="0.5,0.5"
        RadiusX="0.5" RadiusY="0.5" FallbackColor="White">
        <GradientStop Color="#FFF0F8FF" Offset="0" />
        <GradientStop Color="#FF1E90FF" Offset="1" />
</media:RadialGradientBrush>