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
Значение от 0 до 1,0, которое объявляет коэффициент непрозрачности, при этом 1,0 означает полную непрозрачность, а 0 — прозрачную. Значение по умолчанию — 1,0.
Примеры
В этом примере для Opacity используются Раскадровка и DoubleAnimation . Это анимирует 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
Комментарии
Если для вложенных объектов задана непрозрачность, эффективная непрозрачность для отрисовки является результатом всех применимых факторов непрозрачности. Например, если объект, имеющий Opacity=0.5
, содержится в Canvas , который также Opacity=0.5
является , эффективным значением непрозрачности для отрисовки является 0.25
. Значения непрозрачности больше 1,0 при использовании значения обрабатываются как 1,0, хотя получение значения свойства по-прежнему дает исходное значение больше одного. Значения непрозрачности, заданные как меньше 0, при использовании значения обрабатываются как 0. В логике факторинга установка Opacity в значение 2, чтобы отменить эффекты, которые содержатся в объекте с 0,5 Opacity, не работает; Значение 2 обрабатывается как 1,0 еще до вычисления факторинга вложенных объектов.
Opacity — это свойство, которое иногда анимируется в раскадровках визуального состояния с нулевой длительностью. Например, прямоугольник фокуса для визуальных состояний FocusStates задается с Opacity="0"
помощью в исходном шаблоне элемента управления, так как вы не хотите, чтобы этот прямоугольник отображались в состояниях без фокусировки по умолчанию. Но визуальные состояния определяют состояние "Отсортированные" нулевой длительности, которое устанавливает значение Opacity равным 1, если элемент управления, использующий эти шаблоны и состояния, обнаружил, что он ориентирован на клавиатуру. Дополнительные сведения об использовании Opacity см. в разделе Раскадровка анимации для визуальных состояний.
Непрозрачность и проверка попадания
Значение Opacity, равное 0, не исключает объект из проверки попадания. Такое поведение может быть полезно для создания наложений в стиле imagemap, которые рисуются поверх остальной части пользовательского интерфейса. Например, можно использовать холст с двумя дочерними элементами: Прямоугольник с значениями Height, Width и Opacity 0, а также корень макета остальной части пользовательского интерфейса, который должен рисовать под ним. По умолчанию дочерние элементы Canvas рисуют друг на друга в одной и той же абсолютной системе координат. Убедитесь, что значение ZIndex элемента Rectangle выше значения ZIndex другого элемента (или объявите Rectangle после другого элемента в порядке элементов XAML, чтобы получить тот же результат). Подключите логику проверки попадания (объединяет PointerRoutedEventArgs.GetCurrentPoint и VisualTreeHelper.FindElementsInHostCoordinates) к событию PointerPressed для прямоугольника.
Кроме того, чтобы исключить объект из проверки попадания, следует присвоить isHitTestVisible значение false, а не использовать Opacity.