WPF,请问透明掩码OpacityMask属性

u010864841 2013-05-30 11:12:00
UIElement.OpacityMask属性:MSDN获取或设置不透明蒙板,为应用于会屏蔽此元素呈现的目录中的所有Alpha通道的Brush实现。

<Button FontSize="14" FontWeight="Bold" Width="100" Height="25" Content="熊俊">
<Button.OpacityMask>
<SolidColorBrush Color="Red" />
</Button.OpacityMask>
</Button>



OpacityMask属性,设置透明的吧,透明度怎么设置呢?还有,它怎么体现出元素一部分透明、一部分不透明呢?
...全文
735 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingcomxu 2013-05-30
  • 打赏
  • 举报
回复
OpacityMask是把背景里特定的颜色变成透明
ariesget 2013-05-30
  • 打赏
  • 举报
回复
引用 3 楼 u010864841 的回复:
[quote=引用 2 楼 ariesget 的回复:] Opacity是设置透明的,OpacityMask是个透明遮罩,就相当于在背景上再加了一层。用来改变背景的透明度。可以用渐变画笔来实现渐变的透明度设置。
透明罩,加了一层就透明了?OpacityMask没有透明度设置吗?还有它怎么体现出元素一部分透明、一部分不透明呢? [/quote] 就是会根据这个OpacityMask设置的alpha值来改变背景的alpha。你用渐变画笔就可以设置不同区域不同的alpha值。
u010864841 2013-05-30
  • 打赏
  • 举报
回复
引用 2 楼 ariesget 的回复:
Opacity是设置透明的,OpacityMask是个透明遮罩,就相当于在背景上再加了一层。用来改变背景的透明度。可以用渐变画笔来实现渐变的透明度设置。
透明罩,加了一层就透明了?OpacityMask没有透明度设置吗?还有它怎么体现出元素一部分透明、一部分不透明呢?
ariesget 2013-05-30
  • 打赏
  • 举报
回复
Opacity是设置透明的,OpacityMask是个透明遮罩,就相当于在背景上再加了一层。用来改变背景的透明度。可以用渐变画笔来实现渐变的透明度设置。
gomoku 2013-05-30
  • 打赏
  • 举报
回复
你可以用GradientBrush等,黑体即alpha分值。 <GradientBrush ...> <GradientStop Color="#00000000" /> <GradientStop Color="#FF000000" /> </GradientBrush>
  • 打赏
  • 举报
回复
引用 9 楼 u010864841 的回复:
[quote=引用 8 楼 MicrosoftCenterOfHN 的回复:] 首先,你理解Opacity吧。这个是用来设置控件的整体的透明度的。0~1,整体的透明度,每个部分的透明度都是一样的。 那假如你想让一个控件的透明度有层次呢?比如中心比较不透明,往四周透明度越来越高,这种比较长见吧。或者另一个例子,控件从左到右透明度渐变,越来越高。这些显然是用来作整体控制的Opacity做不到的,这时候你就要用OpacityMask了。 而OpacityMask的设置只关注ARGB中的A,也就是透明度。你的代码中的OpacityMask="Red",默认A是FF,就是一点都不透明。所以你看不到效果。 你可以去MSDN上看看相关的例子。
<Ellipse Stroke="Black" Height="200" Width="200" Margin="170,89,0,62" HorizontalAlignment="Left"> <Ellipse.Fill> <RadialGradientBrush RadiusX="1" RadiusY="1" GradientOrigin="0.7,0.3"> <GradientStop Color="Red" Offset="0" /> <GradientStop Color="#20750542" Offset="1" /> //半透明 </RadialGradientBrush> </Ellipse.Fill> </Ellipse> 上面的代码,就是向外面越来越透明的吧,Color="#20750542"就已经指示了透明了。哪里用得上OpacityMask啊?[/quote] Image呢。有Fill属性吗?
u010864841 2013-05-30
  • 打赏
  • 举报
回复
引用 8 楼 MicrosoftCenterOfHN 的回复:
首先,你理解Opacity吧。这个是用来设置控件的整体的透明度的。0~1,整体的透明度,每个部分的透明度都是一样的。 那假如你想让一个控件的透明度有层次呢?比如中心比较不透明,往四周透明度越来越高,这种比较长见吧。或者另一个例子,控件从左到右透明度渐变,越来越高。这些显然是用来作整体控制的Opacity做不到的,这时候你就要用OpacityMask了。 而OpacityMask的设置只关注ARGB中的A,也就是透明度。你的代码中的OpacityMask="Red",默认A是FF,就是一点都不透明。所以你看不到效果。 你可以去MSDN上看看相关的例子。
<Ellipse Stroke="Black" Height="200" Width="200" Margin="170,89,0,62" HorizontalAlignment="Left"> <Ellipse.Fill> <RadialGradientBrush RadiusX="1" RadiusY="1" GradientOrigin="0.7,0.3"> <GradientStop Color="Red" Offset="0" /> <GradientStop Color="#20750542" Offset="1" /> //半透明 </RadialGradientBrush> </Ellipse.Fill> </Ellipse> 上面的代码,就是向外面越来越透明的吧,Color="#20750542"就已经指示了透明了。哪里用得上OpacityMask啊?
  • 打赏
  • 举报
回复
首先,你理解Opacity吧。这个是用来设置控件的整体的透明度的。0~1,整体的透明度,每个部分的透明度都是一样的。 那假如你想让一个控件的透明度有层次呢?比如中心比较不透明,往四周透明度越来越高,这种比较长见吧。或者另一个例子,控件从左到右透明度渐变,越来越高。这些显然是用来作整体控制的Opacity做不到的,这时候你就要用OpacityMask了。 而OpacityMask的设置只关注ARGB中的A,也就是透明度。你的代码中的OpacityMask="Red",默认A是FF,就是一点都不透明。所以你看不到效果。 你可以去MSDN上看看相关的例子。
ariesget 2013-05-30
  • 打赏
  • 举报
回复
引用 6 楼 u010864841 的回复:
[quote=引用 5 楼 u010891254 的回复:] OpacityMask是把背景里特定的颜色变成透明
把背景里特定的颜色变成透明,可以用alpha啊,还要OpacityMask干什么呢?[/quote] OpacityMask可以用一张图片来作为设置,以那张图片的alpha来设置整个背景的各个区域的alpha,可以做出一些不规则的形状背景来.而且背景的话,一般WPF里都是用统一的样式的,那么如果你想改变一下某个特定窗口或控件的背景比如按你说的想设置一部分透明一部分不透明,难道你还要再去写一个样式么?
u010864841 2013-05-30
  • 打赏
  • 举报
回复
引用 5 楼 u010891254 的回复:
OpacityMask是把背景里特定的颜色变成透明
把背景里特定的颜色变成透明,可以用alpha啊,还要OpacityMask干什么呢?
在Windows系统中,notepad.exe(记事本)是一个“经典的”、“简洁的”文本编辑器。这个软件,没有华丽的外观,也没有繁杂的功能,仅仅是一个文本编辑小软件。虽然经过Windows系统数十年的变换,但它却保持着永恒姿态,数十年来几乎不曾改变过。曾经,VS中的经典DEMO中,就有它的身影,一个新建的项目,就藏有一个新建的“记事本”。然而,在WPF的项目中,“记事本”却消失的无影无踪,也许是很容易实现,也许是为了革新,而不愿再传承“经典”。确实,使用WPF技术再次让“记事本”复活,确实也是一件非常容易的事情。但是,如果,使用WPF技术,再搭配当下非常流行的MVVM模式呢?复活“记事本”的难度却陡然上升至很多WPF程序员为之默默叹气。而,MVVM模式是掌握WPF的最顶级技术,MVVM模式拥有的无尽的优势,让WPF相对于过往的编程模式来说,是一种革命性的创新,从而也成为大中型WPF项目中必须的模式。但,学习难度。。。。。。在这个《WPF记事本开发详解》的课程中,赵老师带领你在WPF中,从零开始一步步构建MVVM模式,直到让你亲自以WPF+MVVM的方式,让这个经典的“记事本”软件从你的手中“复活”。在课程中,赵老师会详细讲解WPF和MVVM中的各种技巧,让你从此爱上WPF+MVVM编程。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧