圆角矩形上的 RadialGradientBrush
我有一个带有圆角的矩形(但不是椭圆形),如下所示:
<Rectangle Stroke="Black" StrokeThickness="2" RadiusX="50" RadiusY="100">
<Rectangle.Fill>
<RadialGradientBrush RadiusY="0.5">
<GradientStop Color="Black" Offset="1" />
<GradientStop Color="White" Offset="0.8" />
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>
我想使用从黑到白的渐变填充。我如何指定这一点以使填充保持圆角矩形的形状,而不是椭圆形?
I have a Rectangle with rounded corners (but not an ellipse), something like this:
<Rectangle Stroke="Black" StrokeThickness="2" RadiusX="50" RadiusY="100">
<Rectangle.Fill>
<RadialGradientBrush RadiusY="0.5">
<GradientStop Color="Black" Offset="1" />
<GradientStop Color="White" Offset="0.8" />
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>
I want to use a gradient fill from black to white. How can I specify this in order to make the fill keep the shape of the rounded rectangle, instead of being an ellipse?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于圆角矩形,您可以在 XAML 中使用角的径向渐变和边的线性渐变来完成这一切。
该示例使用 ViewBox,因此不需要在网格及其剪辑路径上设置“大小”。如果您需要调整大小并保持相同的边框半径,您可以绑定 RectangleGeometry.Rect 并使用 ValueConverter。渐变以及 RadiusX 和 RadiusY 属性可以在一处轻松更改。
如果您需要渐变来遵循更复杂的形状,您可以使用 V3.0 PixelShader 来完成。
For a rounded rectangle you can do it all in XAML using radial gradients for the corners and linear gradients for the sides.
The example uses a ViewBox so the Size doesn't need to be set both on the grid and its clip path. If you need it to resize keeping the same border radius you could bind RectangleGeometry.Rect and use a ValueConverter. The gradient and the RadiusX and RadiusY properties can be easily changed in one place.
If you need to a gradient to follow more complex shapes you can do it with a V3.0 PixelShader.
这是一个用更原始的渐变组成圆角矩形渐变的简单示例:
它会产生以下效果:
Here is a simple example composing a rounded-rectangle gradient out of more primitive gradients:
which produces this effect: