Мне нужно создать UserControl, в котором часть фона элемента управления прозрачна. Прозрачная часть вырезана в форме границы с CornerRadius, равным 2 - это требуется из-за дизайна.
Вот мой код, который не работает:
<UserControl Margin="1" x:Name="Box">
<UserControl.Resources>
<Style TargetType="UserControl">
<Setter Property="Height" Value="16" />
</Style>
</UserControl.Resources>
<Grid>
<Border CornerRadius="2" BorderThickness="0">
<Border.Background>
<SolidColorBrush Color="Black" Opacity=".3" />
</Border.Background>
<Border.OpacityMask>
<VisualBrush>
<VisualBrush.Visual>
<Grid
Background="Black"
Width="{Binding ElementName=Box, Path=ActualWidth}"
Height="{Binding ElementName=Box, Path=ActualHeight}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Grid.Column="1" Margin="1" CornerRadius="2" Background="Transparent" BorderThickness="0" />
</Grid>
</VisualBrush.Visual>
</VisualBrush>
</Border.OpacityMask>
</Border>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock
VerticalAlignment="Center" TextAlignment="Right" FontSize="10" Margin="2"
Foreground="White" Text="Property" />
<TextBlock
Grid.Column="1" VerticalAlignment="Center" TextAlignment="Center" FontSize="10" Margin="2"
Text="Value" />
</Grid>
</Grid>
</UserControl>
Я внес несколько изменений, так что вы, ребята, сможете добавить это прямо в XamlPad.
По какой-то причине мой VisualBrush, для которого установлен параметр OpacityMask, не работает вообще. OpacityMask просто отображает все полностью видимым. Для теста я бросил быстрый LinearGradientBrush, и он работал как положено.
Есть ли какие-то проблемы с использованием VisualBrush и OpacityMask вместе? Что здесь не так?
Вот скриншот того, чего я пытаюсь достичь:
ScreenShot http://monitor.utopiaselfscan.com/Screen.png
UserControl - это заголовки, в которых указывается номер объекта, прогресс, часы и т. Д. Они имеют черный цвет с прозрачностью 30% и имеют вырез из маски прямоугольника с закругленными углами. Я обычно использую изображения для рендеринга подобных вещей, потому что наш художник-график может сойти с ума с эффектами, похожими на стекло.