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中让TextBlock每一个字符显示不同的颜色

WPF中让TextBlock每一个字符显示不同的颜色

WPF中让TextBlock每一个字符显示不同的颜色

wpf 用button实现TextBlock里字体颜色的切换

如何获得触发器以根据 DataContext 属性更改 TextBlock 的颜色?

wpf中怎么是鼠标移动到textblock中的字体上使其改变颜色