[英]WPF Rendered Color inconsistency with Opacity on Brush and Control Elements
考慮以下 xaml。
<Window x:Class="PlayTabControl.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary>
<Color x:Key="HintColor" A="255" R="0" G="0" B="0"></Color>
<SolidColorBrush x:Key="HintColorBrush" Color="{DynamicResource HintColor}" Opacity="0.26"/>
</ResourceDictionary>
</Window.Resources>
<StackPanel Background="White">
<TextBlock FontSize="28" FontWeight="ExtraBlack"
Text="Hello World, #42000000"
Foreground="#42000000"
HorizontalAlignment="Center"/>
<TextBlock FontSize="28" FontWeight="ExtraBlack"
Foreground="{StaticResource HintColorBrush}"
Text="Hello World, HintColorBrush @ 0.26"
HorizontalAlignment="Center"/>
<TextBlock FontSize="28" FontWeight="ExtraBlack"
Text="Hello World, #68000000"
Foreground="#68000000"
HorizontalAlignment="Center"/>
<TextBlock FontSize="28" FontWeight="ExtraBlack"
Foreground="Black"
Opacity="0.26"
Text="Hello World, Black TB@0.26"
HorizontalAlignment="Center"/>
<TextBlock FontSize="28" FontWeight="ExtraBlack"
Foreground="#FFbdbdbd"
Text="Hello World, #FFbdbdbd"
HorizontalAlignment="Center"/>
</StackPanel>
</Window>
它產生以下結果:
從中得出的觀察結果是 Line1 和 Line2 的顏色不同。 第 3 行在視覺上是正確的,但在顏色輸入方面在數字上是錯誤的。 這是對每行 Textblock 所做的操作。
我的問題是:什么/為什么 wpf 以不同的方式呈現? 當設計師的示例/屏幕截圖關注透明度時,這使得很難可靠地進行顏色樣式設置。
請注意,出於好奇,我也在 Windows 商店應用程序上完成了此操作。 結果是我所期望的,除了 Line3 之外,所有顏色都相同,它現在會更暗,因為它更不透明。
如果有人也偶然發現了這個問題,似乎將TextOptions.TextFormattingMode設置為Display似乎可以解決這個問題(您可以在窗口級別設置它以影響所有內容)。 不過,這確實會稍微改變文本渲染布局,因此請考慮到這一點。 有關不同之處的更多信息,請參閱this 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.