我想只显示UIElement的所有其他像素行(例如Image
或TextBlock
(,因此每个奇数或每个偶数像素行最好是透明的(显示背景(或纯色。在 WPF 中可以这样的事情吗?
我希望你能理解我想做什么。
在谷歌搜索了很多之后,我认为OpacityMask
是要走的路,但我无法弄清楚如何以编程方式创建一个合适的蒙版(我想避免使用每隔一个像素行绘制的外部位图(。
您可以使用画笔设置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 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>