图形矩形名称和位置

时间:2012-01-11 07:45:32

标签: c#

我希望能够绘制数百个矩形(标签框或文本框或带有线条的矩形)。这些矩形将根据停车场中海湾的物理表示放置。我想要做的是当用户将鼠标移动(悬停)一个矩形时,单独标记矩形(每个矩形将不同以使其唯一),矩形的名称必须返回到程序根据矩形名称和位置从数据库中访问信息的处理。

有没有人知道绘制多个矩形/标签盒等的方法并返回其名称和/或坐标?

3 个答案:

答案 0 :(得分:1)

这是一项非常复杂的任务。但是你可以从OO方式表示你的Rectangle开始:

interface IDrawable 
{
    void Draw();

    // Check for obj under location
    IDrawable HitTest(Point a_loc);
}

class Rectangle : IDrawable
{
   public Point RectLocation { get; private set; }

   public void Draw()
   {
     // Draw Logic using Grapsics -> should be simple you can use existing in.Net Rectangle class
   };

   public IDrawable HitTest(Point a_loc)
   {
     // match's locations
   }
}

// Drawing on custom User Control (surface)

foreach (var oRect in Rectangles)
{
   oRect.Draw();
}

// Mouse -> just handle mouse move event invoke HitTest() with current point

与标签类似。

答案 1 :(得分:1)

假设WinForms或WPF:我创建了一个可以“绘制”停车场中的海湾的控件。然后我会在我的视图中定位所需的控件。

获取有关“选定”托架的信息的任务是微不足道的,因为它们不会重叠,并且鼠标事件将被抛出用于鼠标所在的控件。

我确定有关哪个托架存储在哪里的信息,因此向每个条目添加唯一密钥(例如“托架编号”)应该是一项简单的任务。然后,您可以在构造时将托架编号传递给控件,​​然后访问控制鼠标的控件的托架编号。

答案 2 :(得分:1)

可能这就是你要找的......

//Random rv = new Random();
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        //Use for loop if you want multiple..
        Graphics surfac = this.CreateGraphics();
        Pen p = new Pen(System.Drawing.Color.Blue, 2.0f);

        Rectangle rect = new Rectangle(10,10,100,100);
        // Increment these values to get bays placed as rectangles

        surfac.DrawRectangle(p, rect);
    }