Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 了解不透明掩膜的有效面积_C#_Wpf_Xaml_Opacitymask - Fatal编程技术网

C# 了解不透明掩膜的有效面积

C# 了解不透明掩膜的有效面积,c#,wpf,xaml,opacitymask,C#,Wpf,Xaml,Opacitymask,我使用WPF opacitymask来“剪切”动画区域的形状。我注意到默认情况下,opacitymask只适用于面板的内容,而不适用于整个面板 将背景设置为“透明”是一个有效的解决方案,因为(显然)它会迫使opacitymask被拉伸。然而,这感觉像是一个解决方法,所以我很好奇是否有一种“有意”的方法使opacitymask拉伸到整个网格 参见下面的示例代码和结果: <Window x:Class="Sandbox.MainWindow" xmlns="http://schemas

我使用WPF opacitymask来“剪切”动画区域的形状。我注意到默认情况下,opacitymask只适用于面板的内容,而不适用于整个面板

将背景设置为“透明”是一个有效的解决方案,因为(显然)它会迫使opacitymask被拉伸。然而,这感觉像是一个解决方法,所以我很好奇是否有一种“有意”的方法使opacitymask拉伸到整个网格

参见下面的示例代码和结果:

<Window x:Class="Sandbox.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="400" Width="800">
<Window.Resources>
    <ImageBrush x:Key="SomeAlphaMaskBrush" ImageSource="https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Dog_silhouette.svg/1034px-Dog_silhouette.svg.png"></ImageBrush>
</Window.Resources>
<Grid Name="Container">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Grid Name="Container01" OpacityMask="{StaticResource SomeAlphaMaskBrush}" Background="Transparent">
        <!-- Container01 has a transparent background and it makes the OpacityMask stretch to the entire Container01 -->
        <Rectangle Margin="70" Fill="Black"/>
    </Grid>
    <Grid Grid.Column="1" Name="Container02" OpacityMask="{StaticResource SomeAlphaMaskBrush}">
        <!-- Container02 has no background, the opacitymask is applied only to its content -->
        <Rectangle Margin="70" Fill="Black"/>
    </Grid>
</Grid>

:

您可以使用
ViewportUnits=“Absolute”
VisualBrush
属性设置所需的
OpacityMask
矩形:

<ImageBrush x:Key="SomeAlphaMaskBrush" ViewportUnits="Absolute" Viewport="0 0 20 20" ImageSource="https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Dog_silhouette.svg/1034px-Dog_silhouette.svg.png"/>