c#绘制表格
//绘制表格
//定义绘制表格的参数
Pen _Pen = new Pen(Brushes.Black); // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors. //笔
Font _Font = new Font("微软黑体", (float)(10.5F), FontStyle.Bold); //字体样式
int _TWidth = 0;
int _THeight = 0; //表格宽高
int _x = 25; //起始位置
int _Y = 62;
//表格样式数组 、、、、、、、、、、、、注:——Table.getLength(0)=Widths.length
int[,] _Table = new int[,] {{1, 1, 1, 1, 1, 1, 8}, //(0表示不画) (1则表示横线竖线都画) (8表示只画横线不画竖线,9 只画竖线不画横线 )
{1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 0},
{8, 8, 8, 8, 8, 1, 0},
{1, 1, 1, 1, 1, 1, 0},
{8, 8, 8, 8, 8, 1, 8},
{1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 8, 1, 0},
{1, 8, 8, 8, 8, 1, 0},
{1, 8, 8, 8, 8, 8, 8},
{1, 8, 8, 8, 8, 8, 8},
{1, 8, 8, 8, 8, 8, 8},
{1, 8, 8, 8, 8, 8, 8},
{1, 8, 8, 8, 8, 8, 8}};
int[] _Heights = new int[] { 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 70, 70, 70, 70, 70 }; //行高数组
int[] _Widths = new int[] { 90, 138, 90, 138, 90, 138, 148 }; //列宽数组
private void DrawTable()
{
Bitmap _bmp = new Bitmap(this.Bounds.Width, this.Bounds.Height);
Graphics _G = Graphics.FromImage(_bmp);
_THeight = 0;
_TWidth = 0;
for (int i = 0; i <= _Heights.Length - 1; i++) //计算表格总高
{
_THeight += _Heights[i];
}
for (int i = 0; i <= _Widths.Length - 1; i++) //计算表格总宽
{
_TWidth += _Widths[i];
}
_G.DrawLine(_Pen, _x, _Y, _x, _Y + _THeight); //绘制左边和右边的竖线
_G.DrawLine(_Pen, _x + _TWidth, _Y, _x + _TWidth, _Y + _THeight);
int _TempX = _x;
int _TempY = _Y; //临时存储起始XY坐标
//开始绘制表格内部样式
for (int i = 0; i <= _Table.GetLength(0) - 1; i++) //循环表格样式数组 外循环为行
{
for (int j = 0; j <= _Table.GetLength(1) - 1; j++) //内循环为列
{
if (_Table[i, j] > 0) //0则不进行绘制操作
{
if (_Table[i, j] == 8) //8表示只绘制横线,不绘制竖线
{
_G.DrawLine(_Pen, _TempX, _TempY, _TempX + _Widths[j], _TempY); //绘制横线
_TempX += _Widths[j];
}
else if (_Table[i, j] == 9) //9表示只绘制竖线,不会只横线
{
_G.DrawLine(_Pen, _TempX + _Widths[j], _TempY, _TempX + _Widths[j], _TempY + _Heights[i]); //绘制竖线
_TempX += _Widths[j];
}
else if (_Table[i, j] == 1) //1表示只绘制一个横线,一个竖线
{
_G.DrawLine(_Pen, _TempX, _TempY, _TempX + _Widths[j], _TempY); //先绘制横线
_G.DrawLine(_Pen, _TempX + _Widths[j], _TempY, _TempX + _Widths[j], _TempY + _Heights[i]); //再绘制竖线
_TempX += _Widths[j];
}
else //表示绘制N个横线,一个竖线
{
}
}
}
_TempY += _Heights[i]; //绘制完一行高+
_TempX = _x;
}
_G.DrawLine(_Pen, _x, _Y + _THeight, _x + _TWidth, _Y + _THeight); //绘制最后一行横线
_G.Dispose();
P_Container.BackgroundImage = _bmp;
}
当需要向绘制的表格写入内容的时候只需要用drawstring和drawline类似
c#绘制表格的更多相关文章
- C# 使用PrintDocument 绘制表格 完成 打印预览
C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable 经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代 ...
- C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable
经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代码及来源见最后(其中一份是VB语言的) 其中遇到的一些问题也已经得到了解决(分页,打印预 ...
- 20140610 PP中可以绘制表格;PPT组合之后再加效果
PPT绘制表格(行人检测的cell和block) 动画:组合之后再加效果
- python-xlsxwriter模块绘制表格
#coding: utf-8 import xlsxwriter workbook=xlsxwriter.Workbook('chart.xlsx') worksheet=workbook.add_w ...
- HTML绘制表格
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 2019-9-19:渗透测试,HTML基础学习,html绘制表格
1,受理员业务统计表 效果图: 代码: <!DOCTYPE html><html><head> <title>表格1</title>< ...
- JavaScript绘制表格并将内容以JSON返回后台
只是随手记一下 function printTable() { var aText = []; aText.push("<tr"); aText.push("< ...
- JQUERY动态绘制表格,实现动态添加一行,删除一行
HTML部分 <table style="width: 100%;" id="TABYESTERDAY11"></table> < ...
- 重构一段基于原生JavaScript的表格绘制代码
为了在CardSimulate项目中方便的显示技能和效果列表,决定重构以前编写的一段JavaScript代码——att表格绘制库,这段代码的作用是将特定的JavaScript数据对象转化为表格,支持精 ...
随机推荐
- 【uTenux】学习一个嵌入式操作系统-uTenux
[这个是汇总] 最近有点时间,参加了EEPW论坛和悠龙咨询组织的一个嵌入式操作系统uTenux试用活动.本来想借助这个活动提供的开发板做一个小项目,奈何OS使用功底太次.于是,这个活动被我降低到了学习 ...
- 【学】AngularJS日记(1) - 常用工具
angular.isArray(a) 判断a是否为数组 angular.isDate 是否为时间对象 angular.isDefined 判断元素是否存在 angular.isUndefined an ...
- flddler使用方法
http://blog.csdn.net/geekgjie/article/details/8029936
- linux查找日志技巧
对于从事web开发的人员来说.服务器上的日志多如牛毛,如何快速从中找出所需信息非常重要,以下是我在工作中用到的查找日志的简单命令,希望能对您有所帮助: 工具/原料 linux SecureCR ...
- IBM Power PC安装sysbench 执行mysql基准测试 --- sysbench安装
第一步:下载Sysbench http://dev.mysql.com/downloads/benchmarks.html 第二步:解压sysbench 第三步:执行安装步骤 1. ./autogen ...
- Mysql查询英文如何严格区分大小写?
1. 前提:在Mysql数据库中进行查询时,希望英文严格区分大小写.默认情况下是不区分大小写的.2. 演示如下:在数据库表emp中,job字段中存储的值有'Engineer',现在的情况是,下面的两句 ...
- DbEntry.Net.v3.5 快速教程
1.DbEntry 介绍 EN&Download——[DbEntry Framework下载][Tutorials For Version 3.5] CN&Summary:总体特性的介 ...
- [转]Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications
This article is from blog of Amazon CTO Werner Vogels. -------------------- Today is a very exciting ...
- Ajax跨域访问
Ajax如何跨域访问数据 最近在做项目的过程中遇到的问题,一个网站需要访问另外一个网站的数据,并且是通过脚本的方式,而由于同源策略的限制,开发人员不能再与外部服务器进行通信的时候使用XMLHttpRe ...
- tomcat源码剖析
最近看Tomcat的源码的节奏还算是挺紧凑的,给人的感觉,tomcat的代码相对以前读的jetty的代码显得更有条理一些...当然这也是有可能是因为自己看的jetty的版本是比较老的,而看的Tomca ...