Прозрачные элементы wpf: Практическое руководство. Создание прозрачного или полупрозрачного элемента UIElement — WPF – Окно WPF с прозрачным фоном, содержащее непрозрачные элементы управления [дубликат]

Как на Wpf сделать чередующуюся прозрачность фона элементов списка? — Хабр Q&A

Изучаю Wpf — столкнулся с проблемой. Поиск не помог потому как без понятия куда копать.
Идея такая: Каждый элемент списка подсвечивается разным цветом в зависимости от содержимого одного из столбцов, причем четный (нечетный) элемент списка имеет большую (меньшую) прозрачность чем нечетный (четный).

Вот моя попытка. (В этом случае , естественно, меняется прозрачность всего элемента вместе с текстом, а нужно только у фона.)

<Style x:Key="DropedItem" TargetType="ListViewItem">
            <Style.Triggers>
        	<Trigger Property="Selector.IsSelected" Value="True">
        		<Setter Property="FontWeight" Value="Bold"/>
		</Trigger>
                
		<DataTrigger Binding="{Binding [address-list]}" Value="plain-tarif">
        		<Setter Property="Background" Value="#B857DA1A" />
        		<Setter Property="Foreground" Value="#FF151515"/>
        	</DataTrigger>
      		
        	<DataTrigger Binding="{Binding [address-list]}" Value="drop-user">
        		<Setter Property="Background" Value="#B8DA1A1A" />
        		<Setter Property="Foreground" Value="White"/>
        	</DataTrigger>
                
                <DataTrigger Binding="{Binding [address-list]}" Value="admin">
                    <Setter Property="Background" Value="#B8DAAE1A" />
                    <Setter Property="Foreground" Value="#FF151515"/>
                </DataTrigger>

		<Trigger Property="ItemsControl.AlternationIndex" Value="1">
                    <Setter Property="Opacity"  Value="0.5"/>
                </Trigger>

            </Style.Triggers>            
        </Style>

Мой результат:

Еще пробовал MultiTrigger, но приложение вылетает без объяснения причин, видимо из-за того что DataTrigger и Trigger вместе не уживаются.
Заранее спасибо.

Окно WPF с прозрачным фоном, содержащим непрозрачные элементы управления

33 kmarks2 [2014-01-30 18:47:00]

У меня есть окно со следующим внешним видом:

Я бы хотел, однако, если элементы управления Button (серые с текстом в середине) в Window main Grid имели непрозрачность 1, полностью непрозрачную. Когда я унаследовал этот проект, непрозрачность была установлена ​​на 0.75 на верхнем уровне, внутри открытого тега Window. Теперь, поскольку я понимаю, что это автоматически обеспечит это для всех детей и что указанные дети не могут переопределить.

Как тогда я могу выполнить прозрачный фон, но непрозрачные кнопки? Единственный способ, который я нашел до сих пор (как относительный новичок в WPF), состоит в том, чтобы иметь две отдельные Windows, одну из которых является прозрачным фоном, а другая не имеет фона, но содержит непрозрачные элементы управления. Это ужасно хакерское, хотя я хочу избежать этого, если смогу.

Я могу предоставить код по запросу, но это действительно так же просто, как Window с помощью windowstyle = none и opacity.75, содержащего Grid, который содержит некоторые очень простые элементы управления Button и т.д.

Кто-нибудь построил такой Window раньше или иначе понял, как его создать? Спасибо.

user-interface c# .net transparency wpf

Практическое руководство. Анимация прозрачности элемента или кисти — WPF

  • Время чтения: 2 мин

В этой статье

Чтобы сделать элемент платформы неограниченным, можно анимировать его Opacity свойство или Opacity анимировать свойство объекта Brush (или кисти), используемого для его рисования.To make a framework element fade in and out of view, you can animate its Opacity property or you can animate the Opacity property of the Brush (or brushes) used to paint it. Анимация прозрачности элемента делает его и его дочерние элементы недоступными для просмотра, но анимация кисти, используемой для рисования элемента, позволяет более избирательно выбирать часть элемента.Animating the element’s opacity makes it and its children fade in and out of view, but animating the brush used to paint the element enables you to be more selective about which portion of the element fades. Например, можно анимировать прозрачность кисти, используемой для рисования фона кнопки.For example, you could animate the opacity of a brush used to paint a button’s background. Это приведет к появлению и исчезновению фона кнопки, при этом текст полностью непрозрачен.This would cause the button’s background to fade in and out of view, while leaving its text fully opaque.

Примечание

Анимация объекта предоставляет преимущества производительности по сравнению с анимацией свойстваэлемента.Opacity Brush OpacityAnimating the Opacity of a Brush provides performance benefits over animating the Opacity property of an element.

В следующем примере две кнопки анимированы, чтобы они исчезали и рассматриваются.In the following example, two buttons are animated so that they fade in and out of view. Прозрачность первого Button элемента анимации анимируется от 1.0 до 0.0 Duration пяти секунд.The Opacity of the first Button is animated from 1.0 to 0.0 over a Duration of five seconds. Вторая кнопка также анимируется, но непрозрачность SolidColorBrush, используемая для ее Background рисования, анимируется, а не прозрачность всей кнопки.The second button is also animated, but the Opacity of the SolidColorBrush used to paint its Background is animated rather than the opacity of the entire button. При выполнении этого примера первая кнопка полностью исчезает и выходит из представления, а только фон второй кнопки постепенно исчезает и не отображается.When the example is run, the first button completely fades in and out of view, while only the background of the second button fades in and out of view. Его текст и граница остаются полностью непрозрачными.Its text and border remain fully opaque.

ПримерExample

<!-- OpacityAnimationExample.xaml
     This example shows how to animate the opacity of objects, 
     making them fade in and out of view. -->
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  WindowTitle="Opacity Animation Example" Background="White">
  <StackPanel Margin="20">

    <!-- Clicking this button animates its opacity. -->
    <Button Name="opacityAnimatedButton">
      A Button
      <Button.Triggers>
        <EventTrigger RoutedEvent="Button.Click">
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation 
                Storyboard.TargetName="opacityAnimatedButton"
                Storyboard.TargetProperty="(Button.Opacity)" 
                From="1" To="0" Duration="0:0:5" AutoReverse="True"  /> 
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </Button.Triggers>
    </Button>

    <!-- Clicking this button animates the opacity of the brush
         used to paint its background. -->
    <Button>
      A Button
      <Button.Background>
        <SolidColorBrush x:Name="MyAnimatedBrush" Color="Orange" />
      </Button.Background>
      <Button.Triggers>
        <EventTrigger RoutedEvent="Button.Click">
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation 
                Storyboard.TargetName="MyAnimatedBrush"
                Storyboard.TargetProperty="(Brush.Opacity)" 
                From="1" To="0" Duration="0:0:5" AutoReverse="True"  />  
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </Button.Triggers>         
    </Button>
  </StackPanel>
</Page>

В этом примере код пропущен.Code has been omitted from this example. В полном примере также показано, как анимировать непрозрачность Color LinearGradientBrushэлемента в.The full sample also shows how to animate the opacity of a Color within a LinearGradientBrush. Полный пример см. в разделе Анимация прозрачности образца элемента.For the full sample, see the Animating the Opacity of an Element Sample.

Изменение прозрачности WPF, когда элементы связаны

A VisualBrush is used to fill a Rectangle in a WPF window.

It fills by binding its Visual property to a non-transparent element in the window.

How can the Rectangle fill be made transparent, so that what is behind the window is visible through it, without making other elements transparent as well?

Roughly following the how-to on creating reflection effects on MSDN, and looking at SO questions about making specific elements opaque with a transparent window here and here, I’ve come up with the following in XAML. However, I cannot seem to make the Rectangle transparent, without also making the TextBlock it is bound to also transparent.

<!-- Window.AllowsTransparency is set to true,
       so WindowStyle must also be set to None.
       Background is set to Transparent so child
       elements have capability to be transparent
       to what is behind the window. -->

<Window x:Class="XAMLViewTests.TransparentTestWindow"
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
           Title="TransparentTestWindow"
           AllowsTransparency="True"
           WindowStyle="None" Background="Transparent">
       <StackPanel Orientation="Vertical">

           <!-- Two elements: TextBlock and Rectangle -->

           <TextBlock x:Name="textBlock" Background="White">This is some text.</TextBlock>

           <Rectangle>
               <!-- Fill rectangle with a Visual element bound to TextBlock,
               so it shows exactly the same as TextBlock. Transforms, effects, etc
               can now be performed on the Visual. -->

               <Rectangle.Fill>
                   <VisualBrush Stretch="None" Visual="{Binding ElementName=textBlock}">
                   </VisualBrush>
               </Rectangle.Fill>
           </Rectangle>
       </StackPanel>
</Window>

Практическое руководство. Установка степени прозрачности фона элемента управления — Windows Forms

  • Время чтения: 2 мин

В этой статье

В предыдущих версиях платформы .NET Framework элементы управления не поддерживали задание прозрачных цветов фона, если предварительно не был установлен метод SetStyle в конструкторе форм.In earlier versions of the .NET Framework, controls didn’t support setting transparent backcolors without first setting the SetStyle method in the forms’s constructor. В текущей версии платформы для большинства элементов управления можно задать цвет фона Transparent в окне Свойства во время разработки или в коде в конструкторе форм.In the current framework version, the backcolor for most controls can be set to Transparent in the Properties window at design time, or in code in the form’s constructor.

Примечание

Элементы управления Windows Forms не поддерживают настоящую прозрачность.Windows Forms controls do not support true transparency. Фон прозрачного элемента управления Windows Forms закрашивается его родительским элементом.The background of a transparent Windows Forms control is painted by its parent.

Примечание

Элемент управления Button не поддерживает прозрачный цвет фона, даже если свойство BackColor имеет значение Transparent.The Button control doesn’t support a transparent backcolor even when the BackColor property is set to Transparent.

Установка прозрачного фона для элемента управленияTo give your control a transparent backcolor

  • В окне «Свойства» выберите свойство BackColor и задайте ему значение TransparentIn the Properties window, choose the BackColor property and set it to Transparent

См. такжеSee also

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *