ボタンの背景として 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>
新しいコンピュータ:
古いコンピュータ:
ボタンの後ろに境界線を配置し、ボタンと同じ形状で、フォールバックの単色で塗りつぶすという回避策があります。
RadialGradientBrush が表示されるかどうかをコードで知る方法を見つけてから、ボタンの背景を SolidColorBrush に変更して、おそらくグラフィック システムの機能を調べますか?
概念的には、Graphics.Capabilities.RadialGradientBrush のようなものです。
これを行う方法はありますか?
編集 1: OldComputer でグラフィックス カードを使用 - RadialGradientBrush を表示できるようになりました。G965 グラフィックのようです。WindowsCommunityToolkit でこれに関する問題を開きました。