1

まず、こちらが写真です。 単語検索

マウスの左ボタンが押されている間に複数の長方形を選択するにはどうすればよいですか?

たとえば、「man」という単語を書きたいので、m の四角形をクリックして a の中を移動し、n で離して、「man」という単語を含む文字列を取得します。

Rectangle と文字列を格納するクラスを作成しCube、Graphic オブジェクト、Pen、および Rectangle のいくつかのパラメーターを必要とする Drawing メソッドを持っています。次の方法で、それらをパネルに描画します。

Cube[,] kockak = new Cube[3,3];
//fill cubes with data...

private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;            

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    kockak[j,i].Draw(g, new Pen(Brushes.Black), new Rectangle(i * 100, j * 100, 100, 100));
                }
            }
            Invalidate();
        }
4

2 に答える 2

1

Cube次のように、クラスでキューブを選択するメソッドを追加するだけです。

public class Cube : Panel {
   public Cube(){
      Selected = false;
   }
   protected override void OnPaint(PaintEventArgs e){
      //Draw your background to make it look like selected first before drawing string on top.
      if(Selected) e.Graphics.FillRectangle(Brushes.Green, ClientRectangle);
      //Draw your string normally as you did here
      //.......
   }
   public bool Selected { get; set;}
   public void Select(){
      Selected = true;
      Invalidate();
   }
   public void Deselect(){
      Selected = false;
      Invalidate();
   }
}
//use the code
yourCube.Select();//select a cube
yourCube.Deselect();//deselect a cube
于 2013-07-12T02:39:41.753 に答える
0

キングキングの答えに関するいくつかの追加のアイデア:

MouseMoveフォームにイベントを追加してMouseButton状態を確認します。
である場合はLeft、 を true に設定Cude.selcetedします。

private void TreeViewTeschd_MouseMove(object sender, MouseEventArgs e) {
    if (e.Button == MouseButtons.Left) {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (kockak[j,i].rect.Contains(e.Location)) kockak[j,i].selected = true;
            }
        }
    }
}
于 2013-07-12T07:56:57.087 に答える