私の現在のプログラムでは、ユーザーがポイントをクリックしてから別のポイント (少なくとも 20 ピクセル離れた場所) をクリックし、2 つのポイントの間に線を引くことができます。これを複数回実行できるように、ポリラインを使用しました。すべての行のセットは、すべてのクリックが行われた後にのみ表示されますが.
void DrawingCanvas_MouseUp(object sender, MouseButtonEventArgs e) {
Point position = e.GetPosition(this);
if (leftList == null) {
//starting a new set
leftList.Add(position);
lastPoint = position;
return;
}
//calculate distance, i.e. end click
double a = lastPoint.X - position.X;
double b = lastPoint.Y - position.Y;
double distance = Math.Sqrt(a * a + b * b);
if (distance > 20) {
//continue to add to list
leftList.Add(position);
lastPoint = position;
} else {
//end of the line
paint();
leftList = new PointCollection();
}
}
private void paint() {
Polyline line = new Polyline();
line.Visibility = System.Windows.Visibility.Visible;
line.StrokeThickness = 2;
line.Stroke = System.Windows.Media.Brushes.Black;
line.Points = leftList;
myCanvas.Children.Add(line);
}
だから私の質問は2つあります:
A)クリックするたびに新しい行がすぐに追加されるようにするにはどうすればよいですか。
B) 最後のポイントとマウス カーソルが現在ある場所 (つまり、次のポイントを選択する直前) の間の線をレンダリングするにはどうすればよいですか?