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。

示例

此示例使用 情节提要DoubleAnimation 来面向 Opacity。 这会对 进行动画处理, 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>

注解

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

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

不透明度和命中测试

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

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

适用于

另请参阅