每隔一行像素就移除一次

  • 本文关键字:一次 一行 像素 wpf
  • 更新时间 :
  • 英文 :


我想只显示UIElement的所有其他像素行(例如ImageTextBlock(,因此每个奇数每个偶数像素行最好是透明的(显示背景(或纯色。在 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>

最新更新