2011-06-17 11 views
5

私はC#インベントリアプリケーションを作成しています。しかし、ユーザーが複数の領域をクリックしてその特定の領域のインベントリとやりとりできるマップが必要です。Clickable Image Map C#

現在、私はマップをフォトショップし、フォームのバックグラウンドにしました。ピクチャボックスを別の領域に配置し、マウスオーバー、クリック、およびマウスダウンイベントを手動でコードしてボタンの外観を与えることを計画しています。

とにかく、私の質問は、これは良い考えですか?私はちょうどpictureboxにマップを読み込む、ボタンの視覚効果を取り除き、クリックの座標を追跡する必要がありますか?

答えて

2

これは悪い考えではありませんが、代わりにRectanglesを使用し、マウスでクリックされたポイントがマウスでクリックされたかどうかを調べるために一連のRectangle.Contains(Point)からなるonclick関数を使用することもできますクリック可能な領域。

E.G.あなたは長方形オブジェクトの大きなリストを持っている場合はクリックした場所は、任意の矩形内にある場合

Rectangle R1 = new Rectangle(/*Passed Variables*/); 
Rectangle R2 = new Rectangle(/*Passed Variables*/); 
//... 
OnClick(object sender, MouseEventArgs e) 
{ 
If (R1.Contains(e.Location)) 
    { 
    //Stuff 
    } 
else 
{ 
    If (R2.Contains(e.Location)) 
    { 
    //Stuff 
    } 
} 
} 

は、しかし、あなたは常にチェックするのがより効率的な方法のためのループのための長方形のアレイと使用することができます。

+0

1より大きい場合は配列を使用します。 – mpen

0

CodeProjectでは、誰かがこの目的のためにImageMap Controlを作成しました。私は他人が利用できると思います。

+0

ありがとう、私はそれをチェックアウトします – barbara