如何将效果应用于ListView,使顶部的30像素从完全透明渐变为完全不透明?想法是随着向下滚动,顶部的项目逐渐消失。
我正在构建一个UWP应用程序,设计要求ListView的顶部30像素从不透明度0开始过渡到不透明度1。从概念上讲,我想象一个Opacity Mask应用于SpriteVisual的顶部部分,但我无法弄清楚如何实现这一点。
我正在尝试使用Windows 10周年版,Composition和Win2D。
编辑:图片可以说明问题: 如果您查看这张图片,底部左侧和右侧有两个内容元素。虽然背景看起来是黑色的,但实际上是一个渐变。如果您检查这两个元素的顶部,它们朝向顶部更加透明,从而显示出背景。这就是我想要实现的效果。
编辑2: 为了展示我所寻求的效果的结果,这里是一个GIF,如果我使用重叠的位图,则会显示出效果:
页眉背景图片为:
下面的30像素具有alpha渐变,并出现在网格视图之上,给人一种网格视图项逐渐消失并滑动到背景下方的假象。
XAML布局如下:
我正在构建一个UWP应用程序,设计要求ListView的顶部30像素从不透明度0开始过渡到不透明度1。从概念上讲,我想象一个Opacity Mask应用于SpriteVisual的顶部部分,但我无法弄清楚如何实现这一点。
我正在尝试使用Windows 10周年版,Composition和Win2D。
编辑:图片可以说明问题: 如果您查看这张图片,底部左侧和右侧有两个内容元素。虽然背景看起来是黑色的,但实际上是一个渐变。如果您检查这两个元素的顶部,它们朝向顶部更加透明,从而显示出背景。这就是我想要实现的效果。
编辑2: 为了展示我所寻求的效果的结果,这里是一个GIF,如果我使用重叠的位图,则会显示出效果:
![Scrolling Images](https://istack.dev59.com/LpOu0.gif)
![header background](https://istack.dev59.com/6htbj.webp)
XAML布局如下:
<Page
x:Class="App14.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App14"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="150" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Image Source="/Assets/background.png"
Grid.Row="0"
Grid.RowSpan="2"
VerticalAlignment="Top"
Stretch="None" />
<GridView Grid.Row="1"
Margin="96,-30,96,96">
<GridView.Resources>
<Style TargetType="Image">
<Setter Property="Height" Value="400" />
<Setter Property="Width" Value="300" />
<Setter Property="Margin" Value="30" />
</Style>
</GridView.Resources>
<Image Source="Assets/1.jpg" />
<Image Source="Assets/2.jpg" />
<Image Source="Assets/3.jpg" />
<Image Source="Assets/4.jpg" />
<Image Source="Assets/5.jpg" />
<Image Source="Assets/6.jpg" />
<Image Source="Assets/7.jpg" />
<Image Source="Assets/8.jpg" />
<Image Source="Assets/9.jpg" />
<Image Source="Assets/10.jpg" />
<Image Source="Assets/11.jpg" />
<Image Source="Assets/12.jpg" />
</GridView>
<!-- Header above content -->
<Image Grid.Row="0" Source="/Assets/header_background.png"
Stretch="None" />
<TextBlock x:Name="Title"
Grid.Row="0"
FontSize="48"
Text="This Is A Title"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="White" />
</Grid>