zoukankan      html  css  js  c++  java
  • c#Drawing绘制矩形方块

    因为考虑到用户体验,需要把过程用一个直观的方式体现出来

    有时候产品在生产过程中,是看不到具体的数据交互过程。

    比如说一个产品生产结束了,到下一个产品时,要怎样给用户展示这一个过程呢?

    想了很久决定用矩形方块显示出来。

    一个产品用一个矩形方块表示,产品结束时把方块改变颜色,红黄蓝绿都行

    我的方案是未生产时,方块都是黄色,逐步生产过程时,方块颜色逐步变绿,有NG产品时变红色…………

     

    上面所述大多是应用到项目部分中,具体过程可根据需求改动

    下面说说绘制矩形方块,我在计算和摸索中总结了两个绘制方块的方式

    1.可根据行(x)和列(y)参数,生成几行几列的矩形方块

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

    按照方块的长宽,对数量是有限制的,数量少长宽小,计算机执行快,cpu占用也小

    数量多长宽大,计算机执行速度很慢,cpu占用很高。。(配置低的电脑不要轻易尝试绘制1000个以上方块。。)

    如果你的方块像星星一样大小,可以密密麻麻规律的摆放在窗体控件内(密集症者不要轻易尝试)

    源码:

    1.根据行和列生成长宽自适应的方块

    public void DrawRectangle1(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);
                }
            }
    View Code

    2.根据总数和列数生成长度大小一样的方块

     1  public void DrawRectangle(Panel page, int x, int y)
     2         {
     3             int Page_Width = page.Width;
     4             int Page_Height = page.Height;
     5             int Single_Width = Page_Width / (2 * x + 1);
     6 
     7             int Single_Height = Page_Height / (2 * 4 + 1);
     8             Size size = new Size(Convert.ToInt32(35), Convert.ToInt32(35));
     9             int a = 0;
    10             for (int i = 0; i < x; i++)
    11             {
    12                 if (i % y == 0 && i != 0)
    13                 {
    14                     a++;
    15                 }
    16                 int Xnum = (i + 1) % x;
    17                 int Ynum = i / x + 1;
    18                 if (Xnum == 0)
    19                 {
    20                     Xnum = x;
    21                 }
    22                 Label lable = new Label();
    23                 lable.Location = new Point(20 + i % y * 70, 20 + a * 70);
    24                 lable.Size = size;
    25                 lable.Tag = lable.Size.Width.ToString() + ',' + lable.Size.Height.ToString();
    26                 lable.BackColor = Color.Yellow;
    27                 lable.Name = "lable" + i.ToString();
    28                 lable.Visible = true;
    29                 page.Controls.Add(lable);
    30             }
    31         }
    View Code

    记得引用Drawing

    分享链接:https://pan.baidu.com/s/17LonA98_Mc7KuttDhxFlJg

    推荐一个七夕福利——女朋友3D魔方相册链接

    https://www.cnblogs.com/wl192/p/11511200.html

  • 相关阅读:
    leetcode 14. 最长公共前缀
    leetcode13. 罗马数字转整数
    leetcode 21.合并两个有序链表
    leetcode14-最长公共前缀
    leetcode13-罗马数字转整数
    leetcode11- 盛最多水的容器
    leetcode9-回文数
    leetcode7- 整数反转
    leetcode 1-两数之和
    文件的上传
  • 原文地址:https://www.cnblogs.com/wl192/p/12067256.html
Copyright © 2011-2022 走看看