首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你能把不透明度应用到系统定义的画笔上吗?

你能把不透明度应用到系统定义的画笔上吗?
EN

Stack Overflow用户
提问于 2015-05-23 09:14:15
回答 3查看 3.1K关注 0票数 6

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

代码语言:javascript
复制
<Border Background="{DynamicResource {x:Static SystemColors.HighlightBrushKey}, Opacity=0.5}" />

当然,我们不能直接改变系统定义的画笔上的不透明度,因为无论在哪里使用它,都会搞砸。

我们想要做的是定义一个转换器,我们取一个画笔,并在不透明的情况下返回它的副本,但是由于这不是绑定,所以我们不知道在哪里/如何应用转换器。另外,如果它是一个动态资源,我们需要确保它跟踪更改。

我们也不能简单地在边界上直接设置不透明度,因为当时所有的儿童也有相同的减少不透明度。

我们目前的工作不是直接将内容放在边界上,而是将边界及其内容作为兄弟节点放在网格中,然后在边界上设置不透明度。因为内容现在是在顶部,而不是在边框内,所以它不受不透明度的影响。它只是意味着我们在视觉树中增加了额外的东西,这是很烦人的,但它确实有效。如果我们可以简单地调整XAML中( a)系统刷的不透明度,那就好多了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-23 09:26:19

也许您可以尝试创建一个基于系统颜色的新画笔,而不是直接使用系统刷,如下所示:

代码语言:javascript
复制
<Border>
    <Border.Background>
        <SolidColorBrush 
            Color="{DynamicResource {x:Static SystemColors.HighlightColorKey}}"
            Opacity="0.5" />
    </Border.Background>
</Border>
票数 3
EN

Stack Overflow用户

发布于 2017-05-12 23:01:07

有点晚了,但为了其他人.

你可以创造衍生固体色刷与新的不透明。为此,您只需从用作绑定源的原始画笔中借用颜色,然后设置一个新的不透明度。

代码语言:javascript
复制
<SolidColorBrush Color="{Binding Color, Source={StaticResource blue-light}}" Opacity="0.5" />
票数 7
EN

Stack Overflow用户

发布于 2015-11-20 00:01:35

我想我找到了!由于我所做的其他工作,我想出了一个DynamicResourceBinding概念(StaticResourceBinding也是!)您可以使用转换器以任何您想要的方式转换画笔。

这里有一个指向StackOverflow页面的链接,在这里,我为动态和静态资源执行此操作..。

Post 33816511:如何创建DynamicResourceBinding

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30410955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档