//绘制表格
//定义绘制表格的参数
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#绘制表格的更多相关文章

  1. C# 使用PrintDocument 绘制表格 完成 打印预览

    C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable   经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代 ...

  2. C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable

    经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代码及来源见最后(其中一份是VB语言的) 其中遇到的一些问题也已经得到了解决(分页,打印预 ...

  3. 20140610 PP中可以绘制表格;PPT组合之后再加效果

    PPT绘制表格(行人检测的cell和block) 动画:组合之后再加效果

  4. python-xlsxwriter模块绘制表格

    #coding: utf-8 import xlsxwriter workbook=xlsxwriter.Workbook('chart.xlsx') worksheet=workbook.add_w ...

  5. HTML绘制表格

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 2019-9-19:渗透测试,HTML基础学习,html绘制表格

    1,受理员业务统计表 效果图: 代码: <!DOCTYPE html><html><head> <title>表格1</title>< ...

  7. JavaScript绘制表格并将内容以JSON返回后台

    只是随手记一下 function printTable() { var aText = []; aText.push("<tr"); aText.push("< ...

  8. JQUERY动态绘制表格,实现动态添加一行,删除一行

    HTML部分 <table style="width: 100%;" id="TABYESTERDAY11"></table> < ...

  9. 重构一段基于原生JavaScript的表格绘制代码

    为了在CardSimulate项目中方便的显示技能和效果列表,决定重构以前编写的一段JavaScript代码——att表格绘制库,这段代码的作用是将特定的JavaScript数据对象转化为表格,支持精 ...

随机推荐

  1. mysql处理高并发,防止库存超卖

    先来就库存超卖的问题作描述:一般电子商务网站都会遇到如团购.秒杀.特价之类的活动,而这样的活动有一个共同的特点就是访问量激增.上千甚至上万人抢购一个商品.然而,作为活动商品,库存肯定是很有限的,如何控 ...

  2. Disconf

    通常我们会做如下配置:(disconf 2.6.21) <!-- 一次扫描 --> <bean id="disconfMgrBean" class="c ...

  3. spring mvc 删除返回字符串中值为null的字段

    在spring的配置文件中进行一下配置: <bean class="org.springframework.web.servlet.mvc.method.annotation.Requ ...

  4. git和github使用方式

    git 和github github是远程管理代码的服务器的名称 git代码管理系统 (git既然是一个系统,所以说git也有一些命令) git操作过程 首先在本地建立一个仓库,用来把代码提交到git ...

  5. Linux disk_partition_dev_马士兵_note

    一般装Linux会遇到的问题: 找不到硬件驱动 现在主流的一些硬件 不支持Linux驱动   尽量找主流的硬件,尽量找老一点的硬件   装系统: 1.记下 系统 ---->到时候要找驱动   2 ...

  6. DELL PowerEdge 2950更换告警硬盘

    硬盘为SAS300G15K,四块,3#告警,打算还掉,在R900上找到一块对应的硬盘直接换下. 进入控制台后发现硬盘阵列里还是只有三块硬盘,物理磁盘倒是有四块,新插上的一块状态为“外部”,其他状态是“ ...

  7. C/C++二维数组分配内存

    //C++方式 double **Q=new double*[row];    //初始化Q矩阵 for(int i=0;i<row;++i) Q[i]=new double[POS_NUM]( ...

  8. LoadRunner测试结果分析01 转载至zhangzhe的新浪博客

    LoadRunner测试结果分析之我见 LoadRunner生成测试结果并不代表着这次测试结果的结束,相反,这次测试结果的重头戏才刚刚开始.如何对测试结果进行分析,关系着这次测试的成功与否.网上关于L ...

  9. SqlServer实现先将所有数据排好序再进行分页

    平时,我们对数据进行分页,然后将分页后的数据再进行排序输出.这样做只是针对每次请求,也就是前TOP个数据进行了排序,并不是将数据库中的所有的数据进行了排序.当我们需要将数据库中的所有数据排序后在进行分 ...

  10. spring 定时器Quartz

    一.Quartz是什么 二.  核心接口 scheduler  --- 核心调度器 Job  --- 任务 JobDetail  --- 任务描述 Tigger  --- 触发器 三 . 核心接口之间 ...