我只想显示UIElement的所有其他像素行(例如Image
或TextBlock
),因此每个偶数像素行的每个奇数或最好是透明的(显示背景)或是纯色。在WPF中是否可以这样?
我希望你能理解我想做的事。
经过google搜索后我觉得OpacityMask
是可行的方法,但我无法弄清楚如何以编程方式创建一个合适的掩码(我想避免对每个其他像素使用外部位图划船)。
答案 0 :(得分:1)
你可以用刷子设置OpacityMask
,这会使奇数/偶数行透明:
<VisualBrush x:Key="Blinds"
TileMode="Tile"
Viewport="0,0,10,2" ViewportUnits="Absolute"
Viewbox ="0,0,10,2" ViewboxUnits="Absolute">
<VisualBrush.Visual>
<Grid Height="2" Width="10">
<Grid.Background>
<LinearGradientBrush EndPoint="0,1">
<GradientStop Color="Green" Offset="0.5"/>
<GradientStop Color="Transparent" Offset="0.5"/>
</LinearGradientBrush>
</Grid.Background>
</Grid>
</VisualBrush.Visual>
</VisualBrush>
用法(为简单起见使用Border):
<Border Background="Black"
UseLayoutRounding="True"
OpacityMask="{StaticResource Blinds}"
Height="50"/>
要制作不透明的线条,请在应覆盖的元素顶部放置边框:
<Grid>
<!--element to cover, e.g. Image, here-->
<Border Background="Black"
UseLayoutRounding="True"
OpacityMask="{StaticResource Blinds}" />
</Grid>