wpf - 您可以将不透明度应用于系统定义的画笔吗?

标签 wpf xaml opacity converters

我知道 WPF 画笔类有一个 Opacity 属性。我们需要使用系统定义的画笔,但不透明度减半。我们想做这样的事情(这显然是假代码)...

<Border Background="{DynamicResource {x:Static SystemColors.HighlightBrushKey}, Opacity=0.5}" />

我们当然不能直接改变系统定义画笔的不透明度,因为这会在任何使用它的地方搞砸。

我们想要做的是以某种方式定义一个转换器,我们使用一个画笔并返回一个更改了不透明度的副本,但是由于这不是绑定(bind),我们不知道在哪里/如何应用转换器.另外,如果它是动态资源,我们需要确保它跟踪变化。

我们也不能简单地直接在 Border 上设置不透明度,因为它的所有子项也具有相同的降低的不透明度。

我们当前的解决方法不是将内容直接放在边框中,而是将边框及其内容作为网格中的兄弟元素放置在网格中,然后我们在边框上设置不透明度。由于内容现在位于边框的顶部而不是内部,因此它不受不透明度的影响。这只是意味着我们在可视化树中添加了额外的东西,这很烦人,但它确实有效。如果我们可以在 XAML 中简单地调整(一个)系统画笔的不透明度,那就更好了。

最佳答案

有点晚了,但为了别人......

您可以创建具有新不透明度的衍生纯色画笔。为此,您只需从用作绑定(bind)源的原始画笔借用颜色,然后设置新的不透明度。

<SolidColorBrush Color="{Binding Color, Source={StaticResource blue-light}}" Opacity="0.5" />

关于wpf - 您可以将不透明度应用于系统定义的画笔吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30410955/

相关文章:

c# - Expression Blend 示例数据和数据模板

c# - WPF 垂直 gridsplitter 不工作

javascript - 基于窗口宽度的滚动淡化元素不透明度

jquery - 使用 LESS 不影响子元素的 CSS 背景透明度

c# - 为什么在工作线程上的 View 模型中分配字符串绑定(bind)属性不会抛出参数异常

c# - 什么是依赖属性?它的用途是什么?

c# - RelativeSource 适用于(嵌套的)子属性,而 ElementName 不适用

xaml - 空列表的列表框项目模板

wpf - 免费矢量图标

html - 悬停时调整背景大小