Show / Hide Table of Contents

Практическое руководство. Создание прозрачного или полупрозрачного элемента UIElement

В этом примере показано, как сделать UIElement прозрачным или полупрозрачным. Чтобы сделать элемент прозрачным или полупрозрачным, задайте его Opacity свойство. Значение 0.0 делает элемент полностью прозрачной, а значение 1.0 делает элемент полностью непрозрачным. Значение 0.5 делает элемент 50% непрозрачный и т. д. Элемента Opacity присваивается 1.0 по умолчанию.

Пример

В следующем примере задается Opacity кнопки 0.25, что делает ее и ее содержимое (в данном случае текст кнопки) на 25% непрозрачной.

<!-- Both the button and its text are made 25% opaque. -->
<Button Opacity="0.25">A Button</Button>
//
// Both the button and its text are made 25% opaque.
//
Button myTwentyFivePercentOpaqueButton = new Button();
myTwentyFivePercentOpaqueButton.Opacity = new Double();
myTwentyFivePercentOpaqueButton.Opacity = 0.25;
myTwentyFivePercentOpaqueButton.Content = "A Button";

Если содержимое элемента имеют свой собственный Opacity параметры, эти значения при умножении на содержащего элементы массива Opacity.

В следующем примере задается кнопки Opacity для 0.25и Opacity из Image содержащегося в кнопку, чтобы 0.5. В результате изображение отображается 12,5% непрозрачным: 0.25 * 0.5 = 0.125.

<!-- The image contained within this button has an effective
     opacity of 0.125 (0.25 * 0.5 = 0.125). -->
<Button Opacity="0.25">
  <StackPanel Orientation="Horizontal">
    <TextBlock VerticalAlignment="Center" Margin="10">A Button</TextBlock>
    <Image Source="sampleImages\berries.jpg" Width="50" Height="50"
      Opacity="0.5"/>
  </StackPanel>
</Button>
//
// The image contained within this button has an
// effective opacity of 0.125 (0.25*0.5 = 0.125);
//
Button myImageButton = new Button();
myImageButton.Opacity = new Double();
myImageButton.Opacity = 0.25;

StackPanel myImageStackPanel = new StackPanel();
myImageStackPanel.Orientation = Orientation.Horizontal;

TextBlock myTextBlock = new TextBlock();
myTextBlock.VerticalAlignment = VerticalAlignment.Center;
myTextBlock.Margin = new Thickness(10);
myTextBlock.Text = "A Button";
myImageStackPanel.Children.Add(myTextBlock);

Image myImage = new Image();
BitmapImage myBitmapImage = new BitmapImage();
myBitmapImage.BeginInit();
myBitmapImage.UriSource = new Uri("sampleImages/berries.jpg",UriKind.Relative);
myBitmapImage.EndInit();
myImage.Source = myBitmapImage;
ImageBrush myImageBrush = new ImageBrush(myBitmapImage);
myImage.Width = 50;
myImage.Height = 50;
myImage.Opacity = 0.5;
myImageStackPanel.Children.Add(myImage);
myImageButton.Content = myImageStackPanel;

Другой способ управления прозрачностью элемента является установка прозрачности Brush , рисует элемент. Такой подход позволяет выборочно изменять непрозрачность частей элемента и дает выигрыш в производительности по сравнению с использованием этого элемента Opacity свойство. В следующем примере задается Opacity из SolidColorBrush используется для закрашивания кнопки Background присваивается 0.25. В результате кисти фона является непрозрачным на 25%, но его содержимое (текст кнопки) остаются 100% непрозрачный.

<!-- This button's background is made 25% opaque, but its
     text remains 100% opaque. -->
<Button>
  <Button.Background>
    <SolidColorBrush Color="Gray" Opacity="0.25" />
  </Button.Background>
  A Button
</Button>
//
//  This button's background is made 25% opaque,
// but its text remains 100% opaque.
//
Button myOpaqueTextButton = new Button();
SolidColorBrush mySolidColorBrush = new SolidColorBrush(Colors.Gray);
mySolidColorBrush.Opacity = 0.25;
myOpaqueTextButton.Background = mySolidColorBrush;
myOpaqueTextButton.Content = "A Button";

Вы также можете управлять непрозрачности отдельных цветов в кисти. Дополнительные сведения о цвета и кисти, см. в разделе закраске сплошным цветом и градиентом Обзор. Пример, показывающий, как анимировать непрозрачности элемента, см. в разделе Анимация прозрачности элемента или кисти.

Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX