C#课上的一个拼图小程序,素材imageList设置的是80,80;标签也都是80,80尺寸,panel控件设置size = 240,240.执行出来的画面却放不下素材,改成320,300刚刚好,怎磨回事?是因为我电脑分辨率的问题吗?
代码如下:
namespace 拼图
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Label[,] arrlbl = new Label[3, 3];
int unrow = 0, uncol = 0;
bool playing = false;
private void Form1_Load(object sender, EventArgs e)
{
this.SuspendLayout();
//添加,设计标签控件
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
Label lbl = new Label();
lbl.Text = "";
lbl.AutoSize = false;
lbl.Size = new Size(80,80);
lbl.Location = new Point(j*80,i*80);
lbl.ImageList = imageList1;
lbl.Click += new System.EventHandler(this.lblPic_Click);
panel1.Controls.Add(lbl);
arrlbl[i, j] = lbl;
}
}
this.ResumeLayout();
}
private void button1_Click(object sender, EventArgs e)
{
arrlbl[unrow, uncol].Visible = true;
int[] arrnum = { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
Random rm = new Random();
//打乱数组
for (int i = 0; i < 8; i++)
{
int rmNum = rm.Next(1, 9);
int temp = arrnum[i];
arrnum[i] = arrnum[rmNum];
arrnum[rmNum] = temp;
}
//为标签设置随机图片
for (int i = 0; i < 9; i++)
{
arrlbl[i / 3, i % 3].ImageIndex = arrnum[i];
arrlbl[i / 3, i % 3].BorderStyle = BorderStyle.FixedSingle;
}
//随机设置一张图片隐藏
int cover = rm.Next(0, 9);
unrow = cover / 3;
uncol = cover / 3;
arrlbl[unrow, uncol].Visible = false;
playing = true;
}
private void lblPic_Click(object sender, EventArgs e)
{
if (!playing)
{
return;
}
//不懂
int row = ((Label)sender).Top / 80;
int col = ((Label)sender).Left / 80;
//判断是否可以移动
//单击标签与隐藏标签图片互换
if (Math.Abs(col - uncol) + Math.Abs(row - unrow) == 1)
{
int temp = arrlbl[unrow, uncol].ImageIndex;
arrlbl[unrow, uncol].ImageIndex = arrlbl[row, col].ImageIndex;
arrlbl[row, col].ImageIndex = temp;
arrlbl[unrow, uncol].Visible = true;
arrlbl[row, col].Visible = false;
unrow = row;
uncol = col;
}
for (int i = 0; i < 9; i++)
{
if (arrlbl[i / 3, i % 3].ImageIndex != i)
{
break;
}
if (i == 8)
{
arrlbl[unrow, uncol].Visible = true;
foreach (Label lbl in arrlbl)
{
lbl.BorderStyle = BorderStyle.None;
}
playing = false;
MessageBox.Show("恭喜过关!", "拼图", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
}
运行结果如下: