WPF画笔颜色从win10到win8平板的变化
WPF brush color changes from win10 to win8 tablet
我有一个在 windows 10 上开发的 wpf 应用程序,我现在在 x86 windows 8 平板电脑上试用了它。
当 运行 在平板电脑中时,某些前景颜色显示不同(特别是黑色变为蓝色,白色变为黄色)。
更改出现在文本块、标签、按钮内容文本和数据网格上 headers。
另一方面,"Red"
或任何其他不太暗或不太亮的十六进制颜色将按预期显示。
再一次,我有一些 Canvas
元素有定义为黑色或白色的填充画笔,它们渲染正确。
测试用例:
<Window Background="#FF808080">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- labels -->
<StackPanel Orientation="Vertical" Grid.Column="0">
<StackPanel.Resources>
<Style TargetType="Label">
<Setter Property="FontSize" Value="30"/>
</Style>
</StackPanel.Resources>
<Label Foreground="Black">Black</Label>
<Label Foreground="Red">Red</Label>
<Label Foreground="White">White</Label>
</StackPanel>
<!-- graphics -->
<StackPanel Orientation="Vertical" Grid.Column="1" Margin="10 0 0 0">
<Ellipse Width="100" Height="100" Fill="Black"/>
<Ellipse Width="100" Height="100" Fill="Red"/>
<Ellipse Width="100" Height="100" Fill="White"/>
</StackPanel>
</Grid>
</Window>
平板win8和桌面win10的截图(按顺序):
http://imgur.com/a/1WJRI
解决方案
强制window使用软件渲染RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
现在下一个问题是为什么GPU加速渲染会影响文本颜色,以及如何具体改变它。我的应用程序不是 graphics-heavy,所以我现在只启用 sw 渲染并完成此操作。
我有一个在 windows 10 上开发的 wpf 应用程序,我现在在 x86 windows 8 平板电脑上试用了它。
当 运行 在平板电脑中时,某些前景颜色显示不同(特别是黑色变为蓝色,白色变为黄色)。
更改出现在文本块、标签、按钮内容文本和数据网格上 headers。
另一方面,"Red"
或任何其他不太暗或不太亮的十六进制颜色将按预期显示。
再一次,我有一些 Canvas
元素有定义为黑色或白色的填充画笔,它们渲染正确。
测试用例:
<Window Background="#FF808080">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- labels -->
<StackPanel Orientation="Vertical" Grid.Column="0">
<StackPanel.Resources>
<Style TargetType="Label">
<Setter Property="FontSize" Value="30"/>
</Style>
</StackPanel.Resources>
<Label Foreground="Black">Black</Label>
<Label Foreground="Red">Red</Label>
<Label Foreground="White">White</Label>
</StackPanel>
<!-- graphics -->
<StackPanel Orientation="Vertical" Grid.Column="1" Margin="10 0 0 0">
<Ellipse Width="100" Height="100" Fill="Black"/>
<Ellipse Width="100" Height="100" Fill="Red"/>
<Ellipse Width="100" Height="100" Fill="White"/>
</StackPanel>
</Grid>
</Window>
平板win8和桌面win10的截图(按顺序): http://imgur.com/a/1WJRI
解决方案
强制window使用软件渲染RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
现在下一个问题是为什么GPU加速渲染会影响文本颜色,以及如何具体改变它。我的应用程序不是 graphics-heavy,所以我现在只启用 sw 渲染并完成此操作。