C# WPF三点梯度
使用C#如何生成具有3个点的渐变:C# WPF三点梯度,c#,wpf,xaml,C#,Wpf,Xaml,使用C#如何生成具有3个点的渐变: 白色(左) 蓝色(右) 黑色(底部) 我现在的做法是叠加2个渐变 如果可能的话,我想把它简化成1个梯度 C# XAML <Rectangle x:Name="rectangle1" HorizontalAlignment="Left" Width="255" Height="255" VerticalAlignment="Top"> </Rectang
- 白色(左)
- 蓝色(右)
- 黑色(底部)
<Rectangle x:Name="rectangle1"
HorizontalAlignment="Left"
Width="255"
Height="255"
VerticalAlignment="Top">
</Rectangle>
<Rectangle x:Name="rectangle2"
HorizontalAlignment="Left"
Width="255"
Height="255"
VerticalAlignment="Top">
</Rectangle>
矩形1矩形2
矩形1+2
你可以用不透明度遮罩和线性渐变笔刷来接近,但这并不完美
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" >
<GradientStop Color="Blue" Offset="0"/>
<GradientStop Color="Black" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
<Rectangle.OpacityMask>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="Transparent" Offset="0"/>
<GradientStop Color="Black" Offset="0.5"/>
</LinearGradientBrush>
</Rectangle.OpacityMask>
</Rectangle>
你可以用不透明度遮罩和线性渐变笔刷来接近,但这并不完美
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" >
<GradientStop Color="Blue" Offset="0"/>
<GradientStop Color="Black" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
<Rectangle.OpacityMask>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="Transparent" Offset="0"/>
<GradientStop Color="Black" Offset="0.5"/>
</LinearGradientBrush>
</Rectangle.OpacityMask>
</Rectangle>
简单地说,你不能定义二维梯度 最简单的技术是您正在使用的技术:使用2个线性渐变执行叠加。
正如弗雷德里克的回答所表明的那样,使用不透明度遮罩同样有效,但归根结底都是结合渐变:WPF不允许(仍然)定义2D渐变。简单地说,你不能定义二维渐变。
最简单的技术是您正在使用的技术:使用2个线性渐变执行叠加。
正如Fredrik的回答所表明的,使用不透明度遮罩同样有效,但归根结底都是结合渐变:WPF不允许(仍然)定义2D渐变。看起来您的解决方案已经是一种很好的方法:另一种方法是从原始像素数据创建位图并在图像控件中显示。或者创建一个可写位图并更新其缓冲区。看起来您的解决方案已经是一种很好的方法:另一种方法是从原始像素数据创建位图并在图像控件中显示。或者创建一个可写位图并更新其缓冲区。