1
XAML动画的线,而在WPF绘制
<Canvas Name="canvas" MouseDown="canvas_MouseDown" MouseUp="canvas_MouseUp" Background="White" MouseMove="canvas_MouseMove" />
C#
Line AnimationLine;
Point P1;
private void canvas_MouseDown(object sender, MouseButtonEventArgs e)
{
P1 = e.GetPosition(canvas);
AnimationLine = new Line() { Stroke = new SolidColorBrush { Color = Colors.Blue },StrokeThickness = 3};
AnimationLine.X1 = P1.X;
AnimationLine.Y1 = P1.Y;
canvas.Children.Add(AnimationLine);
}
private void canvas_MouseUp(object sender, MouseButtonEventArgs e)
{
var P2 = e.GetPosition(canvas);
canvas.Children.Remove(AnimationLine);
//AnimationLine = new Line();
canvas.Children.Add
(new Line()
{
X1 = P1.X,
Y1 = P1.Y,
X2 = P2.X,
Y2 = P2.Y,
StrokeThickness = 3,
Stroke = new SolidColorBrush { Color = Colors.Blue }
});
}
private void canvas_MouseMove(object sender, MouseEventArgs e)
{
if(e.LeftButton == MouseButtonState.Pressed)
{
var P2 = e.GetPosition(canvas);
AnimationLine.X2 = P2.X;
AnimationLine.Y2 = P2.Y;
}
}
我试图绘制分配上鼠标向下一行第一点,分配在鼠标弹起并且那当所述第二点线被绘制,但是当拖动时我想要显示动画线,动画线就像是一个实时指引线。
为了得到它我想绘制一条线就像在微软的油漆。
我刚刚写了上面的内容,它的效果很好,但这真的是这样做的方式吗?任何内置的功能可以帮助?
这取决于你正在努力实现的,你有没有在所有的解释什么。你刚才展示了你的代码让我们猜测它应该做什么。无论如何,对我来说,你似乎创造了比实际需要更多的Line对象。为什么在'canvas_MouseUp'中分配'AnimationLine = new Line()'? – Clemens
@Clemens我想绘制一个线在鼠标下分配的第一个点,第二个点分配在鼠标上,这是当线被绘制,但当拖动我想显示动画线,动画线就像一个指导线,为了得到它,我想绘制一条线,就像在Microsoft Paint中一样,AnimationLine = new Line(),以便它被移除 – user1492051
@ user1492051,尝试将'canvas_MouseUp'中的代码注释掉,看看是否有任何区别。此外,您在鼠标移动处理程序中检查“e.LeftButton”,但不在鼠标下移处理程序中,因此右键单击按钮的行为不同(不知道是否有意)。 – icebat