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