UIElement.Opacity 属性

定义

获取或设置对象的不透明度程度。

public:
 property double Opacity { double get(); void set(double value); };
double Opacity();

void Opacity(double value);
public double Opacity { get; set; }
var double = uIElement.opacity;
uIElement.opacity = double;
Public Property Opacity As Double
<uiElement Opacity="double" .../>

属性值

Double

double

一个介于 0 和 1.0 之间的值,声明不透明度因子,1.0 表示完全不透明度,0 表示透明。 默认值为 1.0。

示例

此示例使用 StoryboardDoubleAnimation 来面向不透明度。 这会对 Opacity 进行动画处理,以在一秒钟的持续时间内创建特定于应用的装饰淡入动画。

  <UserControl x:Class="animation_ovw_intro.Page"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  Width="400" Height="300">

  <StackPanel>
    <StackPanel.Resources>
      <!-- Animates the rectangle's opacity. -->
      <Storyboard x:Name="myStoryboard">
        <DoubleAnimation
          Storyboard.TargetName="MyAnimatedRectangle"
          Storyboard.TargetProperty="Opacity"
          From="1.0" To="0.0" Duration="0:0:1" 
          AutoReverse="True" 
          RepeatBehavior="Forever"/>
       </Storyboard>
    </StackPanel.Resources>
    <TextBlock Margin="10">Click on the rectangle to start the animation.</TextBlock>

    <Rectangle PointerPressed="Item_Clicked"
      x:Name="MyAnimatedRectangle"
      Width="100" Height="100" Fill="Blue" />

  </StackPanel>
</UserControl>
' When the user clicks the Rectangle, the animation
' begins.
Private Sub Pointer_Clicked(ByVal sender As Object, ByVal e As PointerRoutedEventArgs)
    myStoryboard.Begin()
End Sub

注解

在嵌套的对象上设置不透明度时,呈现的有效不透明度是所有适用不透明度因素的乘积。 例如,如果 Canvas 中包含的对象Opacity=0.5也是 Opacity=0.5,则用于呈现0.25的有效不透明度值为 。 使用值时,大于 1.0 的不透明度值被视为 1.0,但获取属性值仍会提供原始大于 1 的值。 使用值时,设置为小于 0 的不透明度值被视为 0。 在分解逻辑中,将不透明度设置为 2 以取消被 0.5 不透明度的对象包含的效果不起作用:在计算嵌套对象分解之前,2 值被视为 1.0。

Opacity 是一种属性,它有时在视觉状态情节提要中进行动画处理,持续时间为零。 例如,在原始控件模板中,“FocusStates”视觉状态的焦点矩形是使用 Opacity="0" 设置的,因为你不希望此矩形以默认的非焦点状态显示。 但是,当使用这些模板和状态的控件检测到它以键盘为焦点时,视觉状态定义零持续时间的“焦点”状态,它将不透明度设置为 1。 有关这种不透明度用法的详细信息,请参阅 视觉状态的情节提要动画

不透明度和命中测试

不透明度值为 0 不会从命中测试中排除对象。 此行为可用于创建在 UI 其余部分之上绘制的图像映射样式覆盖。 例如,可以使用具有两个子级的 Canvas:一个具有 HeightWidth 和不透明度为 0 的矩形,以及应在下方绘制的 UI 其余部分的布局根。 默认情况下 ,Canvas 的子级在同一绝对坐标系中相互绘制。 确保 RectangleZIndex 值高于其他元素的 ZIndex (或按 XAML 元素顺序在其他元素之后声明矩形以获取相同的结果。) 将命中测试逻辑 (将 PointerRoutedEventArgs.GetCurrentPointVisualTreeHelper.FindElementsInHostCoordinates) 合并为 RectanglePointerPressed 事件。

或者,若要从命中测试中排除对象,应将 IsHitTestVisible 设置为 false,而不是使用不透明度。

适用于

另请参阅