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数据对象转化为表格,支持精 ...
随机推荐
- Json序列化,date类型转换后前端显示错误的解决方案
1.前台使用Jquery解决 (1)如果我们前台使用Jquery来解决这个问题的话,那么我们首先想到的是我们如何解析这个过程呢,当然我们就想到了自己写一个JavaScript脚本来解析这个过程,当然这 ...
- Oauth2.0
注:Access token 为第三方平台的token,在用户授权时使用Refresh Token为用户的token get/post参数时,一般采用字典排序
- 现代工程仿真CAE技术介绍
随着现代科学技术的发展,人们正在不断建造更为快速的交通工具.更大规模的建筑物.更大跨度的桥梁.更大功率的发电机组和更为精密的机械设备.这一切都要求工程师在设计阶段就能精确地预测出产品和工程的技术性能, ...
- 查看Oracle加锁情况及解锁方法
注意:必须有Oracle DBA 权限才能操作一下SQL语句: ---查询锁定的会话 select * from v$session t where t.SID in (select t2.sessi ...
- mysql数据库常规命令操作
1.MySQL数据库导出命令 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcn ...
- JS中的split
个人理解spilt函数是javascript中字符串和正则表达式的一个联合应用.功能是根据指定的正则表达式(如果是字符串的话也会转为正则表达式)对字符串进行分割.返回值是一个被分割后的字符串数组. 最 ...
- 对于大批量赋值功能,使用if判断是否能提高性能
场景: 如果对某变量进行赋值,是否需要判断一下,如果相等就不用赋值,这样会不会提高性能. 代码如下: "; "; , x2=, x3=; Stopwatch w = new Sto ...
- texy
网络组件 WebView注册代码 <uses-permission android:name ="android.permission.INTERNET" /> 解释网 ...
- 使用 jquery 获取当前时间的方法
我们在写一些效果时,经常要用到 jquery 获取当前时间,但是jquery 目前并没有提供直接获取当前时间的 api 或者函数,所以我们还是得用原生的 javascript 时间对象 Date 来获 ...
- cat > file << EOF 的用法
cat> 文件名<<eof 用来创建文件在这之后输入任何东西 都是在 文件里的输入完成之后EOF结尾 代表结束比如cat > 1.txt <<eof12345eof ...