c#绘制方块

上位机软件开发需求中,要考虑客户生产体验。不能说是点击开启,过一会就弹出一个完成结果的显示,这样有些自以为头脑发达的客户会说你这样不行,要怎么怎么样……。

好的,需求来了。在生产过程中,产品到达某个位置、结束了什么动作,要在软件界面上显示出来。来个简单一点的,方阵形产品摆放,一个盘子上放着5行5列的产品,需要逐一对产品上的码进行数据采集,在采集过程中如何在软件上显示这个过程,我用黄色方块来表示产品,采集一个方块颜色变绿色,采集失败的变红色。

c#绘制方块,用两种方式

1.根据x(行)y(列)参数,生成几行几列的方阵,对应产品方阵。

如:x=8,y=14

public static void DrawRectangleXY(Panel page, int x, int y)
        {
            int Page_Width = page.Width;
            int Page_Height = page.Height;
            int Single_Width = Page_Width / (2 * x + 1);

            int Single_Height = Page_Height / (2 * 4 + 1);
            Size size = new Size(Convert.ToInt32(30), Convert.ToInt32(30));//方块的长宽设定
            int a = 0;
            for (int i = 0; i < x; i++)
            {
                if (i % y == 0 && i != 0)
                {
                    a++;
                }
                int Xnum = (i + 1) % x;
                int Ynum = i / x + 1;
                if (Xnum == 0)
                {
                    Xnum = x;
                }
                Label lable = new Label();
                lable.Location = new Point(20 + i % y * 70, 20 + a * 70);//方块的位置
                //20 + i % y * 70, 20 + a * 70  符合大方块的位置设定
                //14 + i % y * 18, 14 + a * 18  符合小方块的位置设定
                lable.Size = size;
                lable.Tag = lable.Size.Width.ToString() + ',' + lable.Size.Height.ToString();
                lable.BackColor = Color.Yellow;
                lable.Name = "lable" + i.ToString();
                lable.Visible = true;
                page.Controls.Add(lable);
            }
        }

 

2.根据方块z(总数),和一行几列(y)参数,逐一生成方块

如:z=150,y=25

 

 

public static void DrawRectangleZY(Panel pan, int x, int y)
        {
            int Page_Width = pan.Width;
            int Page_Height = pan.Height;
            int Single_Width = Page_Width / (2 * x + 1);
            int Single_Height = Page_Height / (2 * y + 1);
            Size size = new Size(Single_Width, Single_Height);


            for (int i = 0; i < x * y; i++)
            {
                int xNum = (i + 1) % x;  // 第几列
                int yNum = i / x + 1; //第几行
                if (xNum == 0)
                {
                    xNum = x;
                }
                Point point = new Point(((xNum * 2) - 1) * Single_Width, ((yNum * 2) - 1) * Single_Height);
                Label lable = new Label();
                lable.Location = point;
                lable.Size = size;

                lable.Tag = lable.Size.Width.ToString() + ',' + lable.Size.Height.ToString();
                lable.BackColor = Color.Yellow;
                lable.Name = "lable" + i.ToString();
                lable.Visible = true;
                pan.Controls.Add(lable);
            }
        }

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值