TextBlock 笔刷颜色不正确
Posted
技术标签:
【中文标题】TextBlock 笔刷颜色不正确【英文标题】:TextBlock brush giving incorrect color 【发布时间】:2011-09-30 03:17:11 【问题描述】:我有一个 TextBlock 和一个 Rectangle,它们都位于一个空的 WPF4 窗口中。 TextBlock 的 Foreground 和 Rectangle 的 Fill 都设置为 SolidColorBrush,值为 #80800000。
这就是它的样子:
矩形的颜色是正确的(50% 透明栗色),但 TextBlock 给出的是纯灰色。怎么回事?
编辑:这是 XAML:
<Window x:Class="WpfApplication1.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">
<Grid>
<TextBlock Foreground="#80800000" Height="100" HorizontalAlignment="Left" Margin="47,39,0,0" Text="TextBlock" VerticalAlignment="Top" Width="266" FontFamily="Arial" FontWeight="Bold" FontSize="56" />
<Rectangle Fill="#80800000" Height="100" HorizontalAlignment="Left" Margin="71,174,0,0" Stroke="x:Null" VerticalAlignment="Top" Width="200" />
</Grid>
</Window>
【问题讨论】:
感谢您发布图片。您能否编辑此问题以包括 XAML? 确实很有趣,似乎相同的不透明度值对视觉效果有不同的影响,实验你需要将不透明度设置为大约 0.7 以使文本块具有与矩形相同的颜色 @AndrewShepherd 添加了 XAML。真的没什么。 我将您的代码复制并粘贴到 Visual Studio 中。有趣的是,当我用鼠标滚轮放大和缩小时,文本块的颜色会发生变化。当我缩小(使其变小)时,文本块变为灰色。当我放大时,它会变成红色,直到与块的颜色相匹配。 @AndrewShepherd 是的,我也看到了。当它达到 200% 时,会显示正确的颜色。 【参考方案1】:这与窗口顶部的任何其他图标有关吗? 这段代码符合我的预期。
screenshot
或者您的代码中是否有任何额外的不透明度设置?
【讨论】:
这很奇怪,我在另一台机器(HP Elitebook 2760p)上编译并运行了同一个项目,它工作正常(看起来像你的截图)。但是 TextBlock 在我的桌面工作站上仍然显示为灰色。当我在我的 Window 上将“AllowsTransparency”设置为 True 并将“WindowStyle”设置为 None 时,TextBlock 在两台机器上都以正确的颜色显示。以上是关于TextBlock 笔刷颜色不正确的主要内容,如果未能解决你的问题,请参考以下文章
wpf 用button实现TextBlock里字体颜色的切换