【问题标题】:draw rectangle where cursor is绘制光标所在的矩形
【发布时间】:2012-11-15 06:03:10
【问题描述】:

单击鼠标时,我正在尝试绘制一个圆形和一个矩形,因此我得到了鼠标单击的 x 和 y 线。

我在网上搜索过,在 C# 中这只能用 Margin 来完成,在 java 中没有起源或类似的东西,你可以将 x 和 y 给构造函数。

现在我正在尝试正确设置,但我不知道如何正确计算:

据此:

http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.margin%28v=vs.95%29.aspx

rec.Margin = new Thickness(0, 0,0, 0);

有人可以帮助我吗?或者这是不可能的?

【问题讨论】:

  • 您可以使用 Canvas 以绝对坐标定位 FrameworkElements 和 Controls。您还可以覆盖 OnRender 方法。
  • 这是 WinForms 还是 WPF?

标签: c# drawrectangle


【解决方案1】:

这是 WPF 还是 Windows 窗体? WPF 鼠标事件参数有一个 GetPosition(UIElement) 方法,它将告诉您相对于您传入的控件的鼠标坐标。因此,如果您尝试在名为 MyCanvasSystem.Windows.Controls.Canvas 上绘制一个矩形,您可以使用 @987654324 @ 由e.GetPosition(MyCanvas) 返回以放置您的矩形。

这是一个例子:

void MyCanvas_MouseDown(object sender, MouseButtonEventArgs e)
{
    Point ClickPoint = e.GetPosition(MyCanvas);
    Rectangle Rectangle = new Rectangle();
    System.Windows.Controls.Canvas.SetTop(Rectangle, ClickPoint.Y)
    System.Windows.Controls.Canvas.SetLeft(Rectangle, ClickPoint.X)
    MyCanvas.Children.Add(Rectangle);
}

【讨论】:

  • 谢谢。其实它是一个WPF触摸表(表面),但我觉得原理是一样的还是不一样?
  • 我不知道。这是您应该在问题中发布的非常相关的信息。
【解决方案2】:
void MyCanvas_MouseDown(object sender, MouseButtonEventArgs e)
{
    Point ClickPoint = e.GetPosition(MyCanvas);
    Rectangle Rectangle = new Rectangle();
    System.Windows.Controls.Canvas.SetTop(Rectangle, ClickPoint.Y)
    System.Windows.Controls.Canvas.SetLeft(Rectangle, ClickPoint.X)
    MyCanvas.Children.Add(Rectangle);
}

感谢斯宾塞。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多