WPF刷颜色从win10变为win8平板电脑

时间:2016-03-09 13:01:07

标签: c# wpf xaml tablet

我在Windows 10上开发了一个wpf应用程序,我现在尝试在x86 windows 8平板电脑上使用。

在平板电脑中运行时,某些前景色会以不同的方式显示(特别是黑色变为蓝色,白色变为黄色)。

更改显示在文本块,标签,按钮内容文本和数据网格标题上。

另一方面,"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

强制窗口使用RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;

进行软件渲染

现在接下来的问题是为什么GPU加速渲染会影响文本颜色,以及如何专门更改它。我的应用程序不是图形密集,因此我现在只启用sw渲染并完成此操作。