2013-07-11 2 views
1

Прежде всего, вот фотография. wordsearchКак выбрать несколько прямоугольников в игре поиска слов?

Как сделать, чтобы выбрать несколько прямоугольников, а нажата левая кнопка мыши?

Например, я хочу написать слово «человек», поэтому я нажимаю на прямоугольник m, перемещаю его через a, отпускаю его на n и возвращаю строку с «человеческим» словом.

Я создал класс Cube, в котором хранится прямоугольник и строка, а также метод рисования, который нуждается в некоторых параметрах: графическом объекте, ручке и прямоугольнике. Я рисую их на панели, следующим образом:

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(); 
     } 
+0

Я думаю, что для ваших циклов должно быть 'for (int i = 1; i <= 3; i ++)'. Это также справедливо и для 'j'. – Brian

+0

@Brian: Это неправильно. В C# индексы всегда начинаются с 0, поэтому его код верен. – joe

ответ

0

Некоторые дополнительные идеи на King King ответ:

Я бы добавил событие MouseMove в форме и проверьте состояние MouseButton.
Если это Left, установите Cude.selceted в true.

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; 
      } 
     } 
    } 
} 
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 
Смежные вопросы