Как применить эффект затемнения полупрозрачности к окну WPF? - PullRequest
0 голосов
/ 19 января 2010

При отображении индикатора выполнения над окном WPF во время какого-либо процесса, я хотел бы, чтобы остальная часть окна была полупрозрачной, возможно, с некоторым смешением цветов.

Как можно добиться такого эффекта?

Ответы [ 2 ]

2 голосов
/ 19 января 2010

В silverlight вы можете сделать это с помощью пользовательского элемента управления с шириной и высотой, установленными в «Авто». У вас будет какой-то элемент управления, так как LayoutRoot с шириной и высотой также имеет значение auto, и в нем ваш индикатор выполнения будет центрирован в центре (HorizontalAlignment = Center). Затем вы должны установить непрозрачность LayoutRoot равной 0,5 или как вам нравится

Затем, когда вы встраиваете элемент управления в XAML для своей формы, вы устанавливаете его горизонтальное выравнивание и вертикальное выравнивание растягивающимся. Это приводит к тому, что корень макета элемента управления растягивается, чтобы заполнить вашу форму, и из-за его непрозрачности ваша форма становится полупрозрачной. Поскольку ваш индикатор выполнения не настроен на растяжение, он останется в центре.

Я полагаю, что в WPF то же самое

Пример управления:

<UserControl x:Name="MyControl" width="Auto" Heigh="Auto">
    <Grid x:Name="LayoutRoot" Background="#AFFFFFFF" Width="Auto" Height="Auto" Opacity="0.01" >
        <ProgressBar Height="10" VerticalAlignment="Center" HorizontalAlignment="Center" Width="195" IsIndeterminate="True" Background="Black" Foreground="#FFFF0009">
        </ProgressBar>
    </Grid>
</UserControl>

Пример использования:

<MyControl HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
2 голосов
/ 19 января 2010

Самый простой способ - поместить полупрозрачный прямоугольник между элементами управления, которые вы хотите затемнить, и индикатором выполнения, а затем просто сделать его видимым во время выполнения операции.

...