zoukankan      html  css  js  c++  java
  • C#窗口矩形区域着色

    C#写的一个GUI窗口,有几百个矩形区域。每个矩形区域的颜色随时都可能改变,并且多次改变。

    我放弃使用label绘制矩形,因为效果不好。拖控件的界面使用power packs中的rectangleshape绘制。而颜色的修改在c#代码中进行设定。
    通过计算坐标,C#中的代码能和界面上绘制的矩形框对应。

    颜色绘制使用GDI的函数,例如
    Graphics g = e.Graphics;
    g.FillRectangle(brush, rect);

    通过封装,可以编写出一个函数,指定矩形框的坐标和颜色,就能着色。

    首先构造函数中添加

    this.Paint += new PaintEventHandler(Form1_Paint);
    

    然后编写自定义函数Form1_Paint

    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e){
                Graphics g = e.Graphics;
                //g.DrawRectangle(new Pen(Color.Red, 4), rect);
                int i, j, k;
                for (i = 0; i < 4; i++) {
                    for (j = 0; j < 5; j++) {
                        for (k = 0; k < 25; k++) {
                            g.FillRectangle(brush, rect[i,j,k]);
                        }
                    }
                }
            }
    

    其中brush是数据成员:

    private SolidBrush brush = new SolidBrush(Color.White);
    

    rect[i,j,k]是C#代码中定义的矩形区域,也是数据成员,比如:

    private Rectangle[,,] rect = new Rectangle[4,5,25];
    
    

    并记得编写相应的初始化函数,初始化每个rectangle(比如放在构造函数中最前面)

    然后是最后绘制调用函数,每次指定颜色时,更新成员变量brush的Color字段,然后调用invalidate(rect[i,j,k]):

    private void drawBlock(int i, int j, int k, Color color) {
                brush.Color = color;
                Invalidate(rect[i, j, k]);
            }
    
    Greatness is never a given, it must be earned.
  • 相关阅读:
    2879. [NOI2012]美食节【费用流】
    luogu P1012 拼数
    luogu cover
    luogu cogs . [NOIP2003] 传染病控制 WA(1/2)
    luogu P1340 兽径管理 WA
    luogu P1342 请柬
    HTML学习笔记二
    HTML学习笔记一
    arr.sort()
    编写函数实现随机产生指定范围的整数的功能
  • 原文地址:https://www.cnblogs.com/zjutzz/p/4401842.html
Copyright © 2011-2022 走看看