注意:我不在尋找XAML解決方案。連接到兩個形狀的繪製線
我很難弄清楚如何將一條線連接到兩個形狀。我正在尋找的最好的可見表示是將兩個球連接到直杆的兩端。我遇到的問題是如何顯示取決於ball01和ball02中心位置位置的線。截至目前,兩個球都按照我的要求顯示,但是當ball02從ball01移開時(ball02以ball01爲中心開始),線不可見。
ball01 = new Ellipse() { Height = BIG_SIZE, Width = BIG_SIZE };
ball01.Fill = baseBrush;
ball01.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
setBall01X(e.GetPosition(canvas).X - (BIG_SIZE/2));
setBall01Y(e.GetPosition(canvas).Y - (BIG_SIZE/2));
Canvas.SetLeft(ball01, getBall01X());
Canvas.SetTop(ball01, getBall01Y());
canvas.Children.Add(ball01);
ball02 = new Ellipse() { Height = SMALL_SIZE, Width = SMALL_SIZE };
ball02.Fill = childBrush;
ball02.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
setBall02X(e.GetPosition(canvas).X - (SMALL_SIZE/2));
setBall02Y(e.GetPosition(canvas).Y - (SMALL_SIZE/2));
Canvas.SetLeft(ball02, getBall02X());
Canvas.SetTop(ball02, getBall02Y());
canvas.Children.Add(ball02);
// line's X's and Y's are to point to the center of both balls
// Regardless of where the balls move.
line01 = new Line()
{
X1 = getBall01X() + (BIG_SIZE/2),
Y1 = getBall01Y() + (BIG_SIZE/2),
X2 = getBall02X() + (SMALL_SIZE/2),
Y2 = getBall02Y() + (SMALL_SIZE/2)
};
line01.Fill = baseBrush;
line01.SnapsToDevicePixels = true;
line01.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
line01.StrokeThickness = 2;
// Canvas.Set???
canvas.Children.Add(line01);
這是非常粗魯和不當 – SpicyWeenie