菜程序员 2020-10-30 11:35 采纳率: 0%
浏览 38

C#拼图小程序Panel尺寸异常

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);
                }
            }
        }
    }
}

运行结果如下:
图片说明
图片说明

  • 写回答

3条回答 默认 最新

  • Haven55555 2020-10-30 14:33
    关注

    说明你的panel 容器 有padding

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器