摘要:你会GDI画图吗?自己做个简单的报表,你准备好了吗?
如果你打算在C#里面自己绘制报表时,肯定要画表格对吧,那么你会画吗?

下面给一个简单的例子,至于多个单元格合并,请自己去实现,也就是坐标计算的事情。

至于画图,用GDI,还是DirectX画,自己选择,不过这里主要讲的是算法:坐标计算以及画的过程。

注意不要每个列都画一个矩形,很浪费的,因为都重叠了。

GDITableDemo.zip

下面是核心代码

[csharp] 查看源代码复制打印
using System;
using System.Drawing;
using System.Windows.Forms;

namespace GDITableDemo {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}

    private void button1_Click(object sender, EventArgs e) {  string[] columns = textBox1.Text.Split(',');  Font font = panel1.Font;//字体  Brush color = Brushes.Black;//颜色  Brush border = new SolidBrush(panel1.ForeColor);//用前景色画边框  Pen borderStyle =new Pen(border, 1);  //从什么位置开始画  float top = 0F;//Y坐标  float left = 0F;//X坐标  //画笔X坐标偏移量,left1:最后一次位置,left2当前最远位置  float left1 = left, left2 = 0F;  float textLeft=0F;//文本X坐标  float textTop = 0F;//文本Y坐标  float textWidth=0F;//文本宽度  float textHeight=0F;//文本高度  const float columnHeight = 30F;//行高,包括边框在内  const float columnPadding = 10F;//每一列左右多出10像素  Graphics g = Graphics.FromHwnd(panel1.Handle);  textHeight = font.GetHeight(g);//高  textTop = (columnHeight - textHeight) / 2;//上边  for (int i = 0; i < columns.Length; i++) {  //先计算文本  textWidth= g.MeasureString(columns[i],font).Width;//宽  textLeft = left1 + columnPadding;//左边  left2=textLeft+textWidth+columnPadding;  //先画左边框  g.DrawLine(borderStyle, left1, top, left1, columnHeight);  //画文字  g.DrawString(columns[i], font, color, textLeft, textTop);  //注意左边的位置要开始偏移了  left1 = left2;  }  g.DrawLine(borderStyle, left, top, left2, top);//上边框  g.DrawLine(borderStyle, left, columnHeight, left2, columnHeight);//下边框  g.DrawLine(borderStyle, left2, top, left2, columnHeight);//右边框  }
}

}
下面贴图啦!

下面传另一个版本,变态一点的列绘制

GDITableDemo15264497839.zip

看截图吧,代码就不贴了,太长了,图中是两个按钮都点过了。

C# 自己绘制报表,GDI你会用吗?相关推荐

  1. [转] C# 绘制报表,使用Graphics.DrawString 方法

    原文 Graphics.DrawString 方法 在指定位置并且用指定的 Brush 和Font 对象绘制指定的文本字符串. public void DrawString(string s,Font ...

  2. 游戏编程入门(3):绘制基本 GDI 图形

    接上文 游戏编程入门(2):创建游戏引擎和使用该引擎制作小游戏 本篇内容包括: 使用Windows图形设备接口绘制图形的基础知识 设备环境是什么以及它为什么对GDI图形如此重要 如何在Windows中 ...

  3. 基于wxcharts绘制报表

    前言 微信小程序图表插件(wx-charts)是基于canvas绘制,体积小巧,支持图表类型饼图.线图.柱状图 .区域图等图表图形绘制,目前wx-charts是微信小程序图表插件中比较强大好使的一个. ...

  4. 通过java2dAPI绘制报表

    /*     *只画直线,矩形,椭圆,只能向右下角画     *     *PainterPanel extends JPanel implements MouseListener     *addM ...

  5. Direct2D开发:Direct2D 和 GDI 互操作性概述

    本主题说明如何结合使用 Direct2D 和 GDI(可能为英文网页).有两种方法可以结合使用 Direct2D 和 GDI:您可以将 GDI 内容写入与 Direct2D GDI 兼容的呈现器目标, ...

  6. •Grid报表和Free From报表产品之比较

    目前市场上面的报表产品从界面上分为两种:一种是以Grid界面展现的,另一种是Free Form控件形式展现的,超级报表使用的是Grid形式的.这两种类型的报表各自有各自的优点和缺点,下面是对他们的优缺 ...

  7. java实现续打功能_浅谈报表工具的打印方案

    报表工具除了基本的绘制报表,完成数据呈现(也就是让终端用户能看到报表),打印也是报表的基本功能之一. 当前报表工具很多,可以按地域.开闭源等划分,包括有杰表.水晶.Style Report.birt. ...

  8. [转]简单介绍如何用Reporting Service制作报表

       1) 在安装好Reporting Service后,打开Visual studio .net ,选择新建项目,选择建立商业智能项目,选择新建一个报表项目,命名为reportservice1,再选 ...

  9. 微软SQL 报表服务的研究

    微软SQL 报表服务的研究 上次发布的关于国内报表设计器的分析,很多看客说遗漏了微软的报表服务,本人经过一段时间的补充学习,将本人得出的浅淡的研究说一下,本人是初学者,其中观点可能错误,望大家不吝赐教 ...

  10. 使用CImage绘制半透明图片

    最近对一个项目中的软件进行了一些界面性能的改进,我主要是用CImage替代了一些以前用GDI+实现的内容. 使用中发现CImage对半透明图片的绘制,是有问题的,半透的部分总是显示一些很奇怪的内容(颜 ...

最新文章

  1. Planetary Science and Life in the Universe
  2. c语言windows api编程,windows API编程学习
  3. SAP Fiori架构一览
  4. dev可以运行mysql文件夹_Linux查看mysql 安装路径和运行路径
  5. MPA是什么意思?一MPA简介和MPA地位
  6. scala基础之类和对象
  7. 英伟达2022财年第二季度获得创纪录营收65.1亿美元
  8. 左右布局图文排版设计灵感案例
  9. php 一个电子商城的产品分类字段_你会对这个字段做索引嘛,order by多个字段对索引的影响...
  10. Java笔试题编程题大全(有详细答案)
  11. linux系统校对时间与网络时间同步
  12. 【保姆级】扫雷游戏的设计与实现【C语言】
  13. 一个Flash开发者从入门到放弃的成长之路
  14. 使用openpose做的运动检测[附代码]
  15. 【零基础】极星9.3下单详解
  16. 去哪儿网2015校园招聘前端笔试题
  17. 【软件测试】入门答疑,概念
  18. win10别人ping不通我的电脑解决方案
  19. CAD专业素材免费分享
  20. C Primer Plus 第六版 章节课后编程练习答案(下)(缘更)

热门文章

  1. jQuery学习_具备吸附功能的拖曳框
  2. 微技能|几分钟搭建网站内容平台
  3. 使用Gulp来加速你的开发
  4. Charles(网络封包分析工具)
  5. 一公司的面试题(泛型和数组的问题)
  6. Quartz的misfire特性
  7. 5. 高性能MySQL --- 创建高性能索引
  8. 10. PHP 常量
  9. thinkphp5.0.6 连接SQLServer2008r2 配置总结
  10. iPhoneiPod Touch定位编写