2012-01-11 112 views
0

我想要能夠繪製數百個矩形(標籤框或文本框或帶有線條的矩形)。這些矩形將根據停車場內的托架物理表示進行放置。我想要做的就是當用戶將鼠標移到(懸停)一個矩形時,單獨標記這些矩形(每一個都是不同的,以便使其不同),矩形的名稱必須返回到程序中根據矩形名稱和位置從數據庫訪問信息的處理。圖形矩形名稱和位置

有沒有人知道如何繪製多個矩形/標籤框等,並返回他們的名字和或座標?

+1

使問題清晰。你想達到什麼? – 2012-01-11 07:51:24

+3

WinForms? WPF? ASP.NET? Silverlight的?等 – 2012-01-11 07:53:40

+0

使用winforms我想,我不知道ASP.Net – Privesh 2012-01-11 07:59:00

回答

1

這是相當複雜的任務。但是你可以從OO方式開始代表矩形:

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 

而且類似於標籤。

+0

嗨,我到目前爲止的代碼,但行: – Privesh 2012-01-11 12:10:00

1

假設WinForms或WPF:我會創建一個控件,可以在停車場「繪製」一個海灣。然後,我會在我的視圖中定位所需的控件。

獲取有關「選擇」海灣信息的任務是那麼微不足道,因爲他們不重疊和鼠標事件將被拋出的控制鼠標是英寸

我相信有關的信息哪個托架存放在哪裏,因此它應該是一項簡單的任務,爲每個條目添加一個唯一的關鍵字(例如「托架編號」)。然後,您可以將托架編號傳遞給施工時的控件,稍後訪問控制鼠標的控件的托架編號。

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); 
    }