我正在使用 WPF 开发一个简单的游戏。我需要在蓝色、绿色、黄色、红色等之间逐渐改变画笔的颜色,而不会出现明显的颜色变化。
有没有办法可以使用颜色值来实现这一点?我尝试在蓝色和绿色之间使用 BlueGreen 等中间颜色,但它仍然不是很平滑。GradientBrush 没有帮助,就好像有不同颜色的笔触一样。这些线条最终看起来像一串彩色珍珠。
谢谢!
我正在使用 WPF 开发一个简单的游戏。我需要在蓝色、绿色、黄色、红色等之间逐渐改变画笔的颜色,而不会出现明显的颜色变化。
有没有办法可以使用颜色值来实现这一点?我尝试在蓝色和绿色之间使用 BlueGreen 等中间颜色,但它仍然不是很平滑。GradientBrush 没有帮助,就好像有不同颜色的笔触一样。这些线条最终看起来像一串彩色珍珠。
谢谢!
此示例说明如何使用 LinearGradientBrush 类在运行时使用线性渐变在画布内绘制线条。
<Window x:Class="Example.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Canvas Name="paintSurface" MouseDown="Canvas_MouseDown_1" MouseMove="Canvas_MouseMove_1" >
<Canvas.Background>
<SolidColorBrush Color="Red" Opacity="0"/>
</Canvas.Background>
</Canvas>
</Grid>
</Window>
public partial class MainWindow : Window
{
Point currentPoint = new Point();
public MainWindow()
{
InitializeComponent();
}
private void Canvas_MouseDown_1(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (e.ButtonState == MouseButtonState.Pressed)
currentPoint = e.GetPosition(this);
}
private void Canvas_MouseMove_1(object sender, System.Windows.Input.MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Line line = new Line();
// Create a diagonal linear gradient with four stops.
LinearGradientBrush myLinearGradientBrush =
new LinearGradientBrush();
myLinearGradientBrush.StartPoint = new Point(0, 0);
myLinearGradientBrush.EndPoint = new Point(1, 1);
myLinearGradientBrush.GradientStops.Add(
new GradientStop(Colors.Yellow, 0.0));
myLinearGradientBrush.GradientStops.Add(
new GradientStop(Colors.Red, 0.25));
myLinearGradientBrush.GradientStops.Add(
new GradientStop(Colors.Blue, 0.75));
myLinearGradientBrush.GradientStops.Add(
new GradientStop(Colors.LimeGreen, 1.0));
line.Stroke = myLinearGradientBrush;
line.X1 = currentPoint.X;
line.Y1 = currentPoint.Y;
line.X2 = e.GetPosition(this).X;
line.Y2 = e.GetPosition(this).Y;
currentPoint = e.GetPosition(this);
paintSurface.Children.Add(line);
}
}
}