Я использую RadialGradientBrush в качестве фона для кнопки.
На одном компьютере это работает хорошо.
С другой стороны, фон прозрачный.
NewComputer: Intel i7-8700, 16 Гб оперативной памяти, 64-разрядная ОС, графика - Nvidia GeForce GTx1050Ti
OldComputer: Intel 6300, оперативная память 2 Гб, 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:
OldComputer:
У меня есть обходной путь, который помещает рамку позади кнопки, с той же самой формой, что и кнопка, залитая запасным сплошным цветом.
Я бы скорее нашел в коде способ узнать, будет ли отображаться RadialGradientBrush, а затем изменить фон кнопки на SolidColorBrush, возможно, глядя на возможности графической системы?
Концептуально, что-то вроде Graphics.Capabilities.RadialGradientBrush.
Есть идеи, как это сделать?
Редактировать 1: Использование графической карты в OldComputer - теперь может отображать RadialGradientBrush. Похоже, графика G965.
Я открыл вопрос об этом с WindowsCommunityToolkit.