UIElement.OpacityMask属性:MSDN获取或设置不透明蒙板,为应用于会屏蔽此元素呈现的目录中的所有Alpha通道的Brush实现。<Button FontSize="14" FontWeight="Bold" Width="100" Height="25" Content="熊俊">
    <Button.OpacityMask>
        <SolidColorBrush Color="Red" />     
   </Button.OpacityMask>
</Button>OpacityMask属性,设置透明的吧,透明度怎么设置呢?还有,它怎么体现出元素一部分透明、一部分不透明呢?

解决方案 »

  1.   

    你可以用GradientBrush等,黑体即alpha分值。
        <GradientBrush ...>
          <GradientStop Color="#00000000"  />
          <GradientStop Color="#FF000000"  />
        </GradientBrush>
      

  2.   

    Opacity是设置透明的,OpacityMask是个透明遮罩,就相当于在背景上再加了一层。用来改变背景的透明度。可以用渐变画笔来实现渐变的透明度设置。
      

  3.   

    透明罩,加了一层就透明了?OpacityMask没有透明度设置吗?还有它怎么体现出元素一部分透明、一部分不透明呢? 
      

  4.   

    透明罩,加了一层就透明了?OpacityMask没有透明度设置吗?还有它怎么体现出元素一部分透明、一部分不透明呢? 
    就是会根据这个OpacityMask设置的alpha值来改变背景的alpha。你用渐变画笔就可以设置不同区域不同的alpha值。
      

  5.   

    OpacityMask是把背景里特定的颜色变成透明
      

  6.   

    把背景里特定的颜色变成透明,可以用alpha啊,还要OpacityMask干什么呢?
      

  7.   

    把背景里特定的颜色变成透明,可以用alpha啊,还要OpacityMask干什么呢?
    OpacityMask可以用一张图片来作为设置,以那张图片的alpha来设置整个背景的各个区域的alpha,可以做出一些不规则的形状背景来.而且背景的话,一般WPF里都是用统一的样式的,那么如果你想改变一下某个特定窗口或控件的背景比如按你说的想设置一部分透明一部分不透明,难道你还要再去写一个样式么?
      

  8.   

    首先,你理解Opacity吧。这个是用来设置控件的整体的透明度的。0~1,整体的透明度,每个部分的透明度都是一样的。那假如你想让一个控件的透明度有层次呢?比如中心比较不透明,往四周透明度越来越高,这种比较长见吧。或者另一个例子,控件从左到右透明度渐变,越来越高。这些显然是用来作整体控制的Opacity做不到的,这时候你就要用OpacityMask了。而OpacityMask的设置只关注ARGB中的A,也就是透明度。你的代码中的OpacityMask="Red",默认A是FF,就是一点都不透明。所以你看不到效果。你可以去MSDN上看看相关的例子。
      

  9.   

    <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啊?
      

  10.   


    <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啊?Image呢。有Fill属性吗?