0
所以,我试图在屏幕上创建一个网格,为此,我实现了矩形的多维数组。鼠标点击数组中的矩形问题
程序启动时,我使用for循环来增加x和y坐标以形成网格。
public Form1() {
InitializeComponent();
for (int x = 0; x < 12; x++) {
for (int y = 0; y < 12; y++) {
recArray[x, y] = new Rectangle(y * 50, x * 50, 100, 100);
}
Application.DoEvents();
}
}
我的问题是试图找出当用户点击了一个长方形,而且,他她已经点击/其矩形在数组中。正如我在给出正确的矩形时将边框改为红色。
我使用的是Visual Studio 2008,这里是我的代码。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Quoridor {
public partial class Form1 : Form {
private Pen pen = Pens.Black;
Rectangle[,] recArray = new Rectangle[12, 12];
public Form1() {
InitializeComponent();
for (int x = 0; x < 12; x++) {
for (int y = 0; y < 12; y++) {
recArray[x, y] = new Rectangle(y * 50, x * 50, 100, 100);
}
Application.DoEvents();
}
}
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
for (int x = 0; x < 12; x++) {
for (int y = 0; y < 12; y++) {
e.Graphics.DrawRectangle(pen, recArray[x, y]);
Application.DoEvents();
}
}
}
private void Form1_Click(object sender, EventArgs e) {
Point cursor = this.PointToClient(Cursor.Position);
Refresh();
}
}
}
我正在把它变成一个真正的游戏,包括所有的课程。但请记住,这是我的第二个月的编程,所以不要苛刻^ _^
您需要沉入MouseClick事件并获取当前的x和y坐标。使用它来查找矩形列表中的矩形列表。我不记得确切,但我认为你需要将屏幕坐标转换为窗口或反之,以确保您获得正确的偏移量。 –