2012-01-11 15 views
0

何百もの矩形(ラベルボックスやテキストボックス、または線で囲まれた矩形)を描きたいと思っています。これらの矩形は、駐車場のベイの物理的表現に従って配置されます。私がしたいのは、ユーザーがマウスを(上に)矩形の上を動かすと、矩形を個別にラベル付けすることです(それぞれが一意になるように異なります)。矩形の名前は、長方形の名前と場所に従ってデータベースから情報にアクセスする処理。グラフィック矩形の名前と位置

複数の矩形/ラベルボックスなどを描画し、その名前や座標を返す方法を知っている人はいますか?

+1

探しているものであるかもしれませ疑問を明確にします。達成したいことは何ですか? –

+3

WinForms? WPF? ASP.NET? Silverlight?など –

+0

winformsを使用して私は、私はASP.Netを知っていないと思う – Privesh

答えて

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

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); 
    } 
関連する問題