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数据对象转化为表格,支持精 ...
随机推荐
- link与import的区别
- RT-Thread下的串口驱动程序分析【转载】
编写本文稿的目的,在于通过分析stm32平台上的串口中断源码,学习 RTT中如何编写中断处理程序 如何编写RTT设备驱动接口代码 了解串行设备的常见处理机制 先以RTT官方源码中的STM32 BSP包 ...
- maven 手动安装本地jar包(转载)
From:http://www.cnblogs.com/leiOOlei/p/3356834.html 安装命令: -Dpackaging=jar
- java获取当前日期等以及时区
代码: public static void main(String[] args) throws Exception{ /* * 获取当前时间的办法 */ //这个获取从1970年..直到现在的毫秒 ...
- 从零开始系列--R语言基础学习笔记之一 环境搭建
R是免费开源的软件,具有强大的数据处理和绘图等功能.下面是R开发环境的搭建过程. 一.点击网址 https://www.r-project.org/ ,进入"The R Project fo ...
- Windows系统
1. 更改XP登录界面 怎样启用XP的经典登录界面 第一步:用管理员账号登录系统. 第二步:运行gpedit.msc启动组策略编辑器,找到"计算机配置"--"管理模板&q ...
- Study plan for automation test framework
虽然部门的automation建立起来有两年多,去年项目一直很忙,仅限于应用(e.g 运行脚本测试或者写一些简短的测试脚本),但是一直没有深入研究其组成框架.近期希望抽出时间来做深入学习. 初步计划从 ...
- MYSQL PERFORMANCE_SCHEMA HINTS
ACCOUNTS NOT PROPERLY CLOSING CONNECTIONS [ 1 ] Works since 5.6 SELECT ess.user, ess.host , (a.total ...
- sql2008r 收缩数据库日志log文件;删除errorlog文件的方法
1.清空log文件,以减少数据库文件log所占的空间 USE dbname1 ; GO ALTER DATABASE dbname1 SET RECOVERY SIMPLE;--设置简单恢复模式 GO ...
- C#读取Excel遇到无法读取的解决方法
C#读取Excel遇到无法读取的解决方法:1.在导入数据连接字符串中,将IMEX=1加入,“Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\ ...