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

C#窗口矩形区域着色的更多相关文章

  1. opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像

    前言 好长时间没写博文了,今天偷偷懒写篇关于opencv2中鼠标响应操作的文章. 鼠标操作属于用户接口设计,以前一直使用Qt来做,但是如果只需要简单的鼠标,键盘操作,直接调用opencv库的函数也未尝 ...

  2. Win32 GDI 非矩形区域剪裁,双缓冲技术

    传统的Win32通过GDI提供图形显示的功能,包括了基本的绘图功能,如画线.方块.椭圆等等,高级功能包括了多边形和Bezier的绘制.这样app就不用关心那些图形学的细节了,有点类似于UNIX上的X- ...

  3. ArcEngine地图窗口指定区域导出指定DPI多格式---delphi/C#实现

    delphi/C#实现,其他语言稍微改下就行了.AE的编码各个语言都差不多,这里也没用到某一语言的特性. 函数特点: 1.可以精确导出指定范围的图形要素 2.支持多格式.TIF, .EMF,.GIF, ...

  4. 【代码笔记】iOS-根据size截取屏幕中间矩形区域

    代码: RootViewController.m #import "RootViewController.h" @interface RootViewController () @ ...

  5. javascript中求浏览器窗口可视区域兼容性写法

    1.浏览器窗口可视区域大小 1.1 对于IE9+.Chrome.Firefox.Opera 以及 Safari:•  window.innerHeight - 浏览器窗口的内部高度•  window. ...

  6. Javascript进阶篇——(DOM—节点---获取浏览器窗口可视区域大小+获取网页尺寸)—笔记整理

    浏览器窗口可视区域大小获得浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)的方法:一.对于IE9+.Chrome.Firefox.Opera 以及 Safari: • window.innerH ...

  7. 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域

    这是两个相关的程序,前者是后者的基础.实际上前一个程序也是在前面博文的基础上做的修改,请参考<在OpenCV中利用鼠标绘制直线> .下面贴出代码. 程序之一,在OpenCV中利用鼠标绘制矩 ...

  8. js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码

    获取浏览器窗口的可视区域高度和宽度,滚动条高度有需要的朋友可参考一下.IE中,浏览器显示窗口大小只能以下获取: 代码如下复制代码 代码如下: document.body.offsetWidth doc ...

  9. BC 2015在百度之星程序设计大赛 - 预赛(1)(矩形区域-旋转卡)

    矩形区域 Accepts: 717 Submissions: 1619 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 ...

随机推荐

  1. 监听input内容改变的oninput与onpropertychange在ie9的bug

    在做autocomplate的时候发现,ie9中,剪切.退格.删除不触发oninput事件,而ie9和ie9+已经移除了onpropertychange事件. 只好尝试添加退格.delete.剪切事件 ...

  2. 高性能相关、Scrapy框架

    高性能相关 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待,从而使得请求整体变慢. import requests def fetch_async(url): ...

  3. day4-python基础

  4. 随机抽样一致性算法(RANSAC)示例及源代码--转载

    转载自王先荣 http://www.cnblogs.com/xrwang/p/SampleOfRansac.html 作者:王先荣 大约在两年前翻译了<随机抽样一致性算法RANSAC>,在 ...

  5. Hdu3223 Decrypt Messages

    Decrypt Messages Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. python函数的输入参数

    http://note.youdao.com/noteshare?id=c2a0a39ee3cae09a62dcbc9f96d04b56

  7. react-native安装react-navigation后出现package-lock.json文件的坑

    npm5.0开始安装后回生成一个新的package-lock.json文件.以致初始化好的react-native项目引入的依赖被删除. 目前解决办法.使用facebook的yarn add 第三方组 ...

  8. NOIP 2014 提高组 Day2

    期望得分:100+60+30=190 实际得分:70+60+30=160 https://www.luogu.org/problem/lists?name=&orderitem=pid& ...

  9. [洛谷P3228] [HNOI2013]数列

    洛谷题目链接:[HNOI2013]数列 题目描述 小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察到: ...

  10. GridControl详解(四)分组排序汇总

    分组: 按时间分第一组: 按性别分第二组: 显示结果: 高级设置: 将所有组展开代码:gridView1.ExpandAllGroups(); 显示结果: 自定义组名,GridView级事件 增加事件 ...