2013-07-11 2 views
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(); 
     } 
+0

for 루프는'for (int i = 1; i <= 3; i ++)'이어야한다고 생각합니다. 이것은 또한'j'에 대해서도 마찬가지입니다. – Brian

+0

@ 브라이언 : 그건 잘못되었습니다. C# 인덱스는 항상 0으로 시작하므로 코드가 정확합니다. – joe

답변

0

국왕의 대답에 몇 가지 추가 아이디어 :

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 
관련 문제