UIElement.Opacity 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置对象的不透明度程度。
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
一个介于 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:一个具有 Height、Width 和不透明度为 0 的矩形,以及应在下方绘制的 UI 其余部分的布局根。 默认情况下,绘图的子级在同一 Canvas
绝对坐标系中相互交接。 确保 的 Rectangle
ZIndex 值高于其他元素的ZIndex
(,或在 XAML 元素顺序中的其他元素之后声明 Rectangle
以获取相同的结果。) 将命中测试逻辑 (将 Microsoft.UI.Xaml.Input.PointerRoutedEventArgs.GetCurrentPoint 和 VisualTreeHelper.FindElementsInHostCoordinates 合并到 PointerPressed 事件中Rectangle
。
或者,若要从命中测试中排除对象,应将 IsHitTestVisible 设置为 false
,而不是使用 Opacity
。