文章出處

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

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()