确定 UIElement 在 Canvas 上的位置

发布于 2024-07-22 09:59:05 字数 730 浏览 9 评论 0原文

我花了 20 分钟尝试在 C# 中找到如何在两个矩形之间绘制一条线的示例,但我找不到任何内容。 我不知道我是否只是不理解在 Silverlight 中绘制 2D 形状的范式,或者我是否只是找错了地方。

我已经设置了矩形,以便可以拖动它们,现在我想在画布上拖动矩形时在两个形状之间画一条线。 我希望能够在拖动第二个矩形时执行类似的操作:

void host1_MouseLeftButtonMove(object sender, MouseEventArgs e)
{
   if (isDown) 
   {

      this.host1TranslateTransform.X = e.GetPosition(canvas).X - x;
      this.host1TranslateTransform.Y = e.GetPosition(canvas).Y - y;

      Line l = new Line();
      l.X1 = rect1.X; // does not work
      l.X2 = e.GetPosition(canvas).X;
      l.Y1 = rect1.Y; // does not work
      l.Y2 = e.GetPosition(canvas).Y;

   }
}

如何获取第一个框的坐标? 我不知道如何在应用程序中获取形状相对于画布的坐标。 如果有任何教程能够让初学者了解如何绘制简单的 2D 形状,我将不胜感激。

谢谢!

I have spent 20 minutes trying to find an example in C# of how to draw a line between two rectangles, and I can't find anything. I don't know if I just don't understand the paradigm of drawing 2D shapes in Silverlight, or if I'm just looking in the wrong place.

I have set up the rectangles so I can drag them around, and now I want to draw a line between the two shapes as I drag a rectangle across the canvas. I want to be able to do something like this as I drag the second rectangle:

void host1_MouseLeftButtonMove(object sender, MouseEventArgs e)
{
   if (isDown) 
   {

      this.host1TranslateTransform.X = e.GetPosition(canvas).X - x;
      this.host1TranslateTransform.Y = e.GetPosition(canvas).Y - y;

      Line l = new Line();
      l.X1 = rect1.X; // does not work
      l.X2 = e.GetPosition(canvas).X;
      l.Y1 = rect1.Y; // does not work
      l.Y2 = e.GetPosition(canvas).Y;

   }
}

How do I get the coordinates of the first box? I can't figure out how to get the coordinates of shapes relative to the canvas in my application. I would appreciate any tutorials that give a beginner overview for how to draw simple 2D shapes.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

‖放下 2024-07-29 09:59:05

尝试这个

Canvas.GetTop(element);
Canvas.GetLeft(element);

位置属性是附加属性;)

try this

Canvas.GetTop(element);
Canvas.GetLeft(element);

position properties are attached properties ;)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文