1

ボタンの背景として RadialGradientBrush を使用しています。1台のコンピューターで、うまく機能します。一方、背景は透明です。

新しいコンピューター: Intel i7-8700、16Gb RAM、64 ビット OS、グラフィックス - Nvidia GeForce GTx1050Ti

OldComputer: Intel 6300、2Gb RAM、32 ビット OS、グラフィックス - 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 からの画像

古いコンピュータ:

OldComputer からの画像

ボタンの後ろに境界線を配置し、ボタンと同じ形状で、フォールバックの単色で塗りつぶすという回避策があります。

RadialGradientBrush が表示されるかどうかをコードで知る方法を見つけてから、ボタンの背景を SolidColorBrush に変更して、おそらくグラフィック システムの機能を調べますか?
概念的には、Graphics.Capabilities.RadialGradientBrush のようなものです。
これを行う方法はありますか?

編集 1: OldComputer でグラフィックス カードを使用 - RadialGradientBrush を表示できるようになりました。G965 グラフィックのようです。WindowsCommunityToolkit でこれに関する問題を開きました。

4

1 に答える 1