C# 自己绘制报表,GDI你会用吗?
摘要:你会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你会用吗?相关推荐
- [转] C# 绘制报表,使用Graphics.DrawString 方法
原文 Graphics.DrawString 方法 在指定位置并且用指定的 Brush 和Font 对象绘制指定的文本字符串. public void DrawString(string s,Font ...
- 游戏编程入门(3):绘制基本 GDI 图形
接上文 游戏编程入门(2):创建游戏引擎和使用该引擎制作小游戏 本篇内容包括: 使用Windows图形设备接口绘制图形的基础知识 设备环境是什么以及它为什么对GDI图形如此重要 如何在Windows中 ...
- 基于wxcharts绘制报表
前言 微信小程序图表插件(wx-charts)是基于canvas绘制,体积小巧,支持图表类型饼图.线图.柱状图 .区域图等图表图形绘制,目前wx-charts是微信小程序图表插件中比较强大好使的一个. ...
- 通过java2dAPI绘制报表
/* *只画直线,矩形,椭圆,只能向右下角画 * *PainterPanel extends JPanel implements MouseListener *addM ...
- Direct2D开发:Direct2D 和 GDI 互操作性概述
本主题说明如何结合使用 Direct2D 和 GDI(可能为英文网页).有两种方法可以结合使用 Direct2D 和 GDI:您可以将 GDI 内容写入与 Direct2D GDI 兼容的呈现器目标, ...
- •Grid报表和Free From报表产品之比较
目前市场上面的报表产品从界面上分为两种:一种是以Grid界面展现的,另一种是Free Form控件形式展现的,超级报表使用的是Grid形式的.这两种类型的报表各自有各自的优点和缺点,下面是对他们的优缺 ...
- java实现续打功能_浅谈报表工具的打印方案
报表工具除了基本的绘制报表,完成数据呈现(也就是让终端用户能看到报表),打印也是报表的基本功能之一. 当前报表工具很多,可以按地域.开闭源等划分,包括有杰表.水晶.Style Report.birt. ...
- [转]简单介绍如何用Reporting Service制作报表
1) 在安装好Reporting Service后,打开Visual studio .net ,选择新建项目,选择建立商业智能项目,选择新建一个报表项目,命名为reportservice1,再选 ...
- 微软SQL 报表服务的研究
微软SQL 报表服务的研究 上次发布的关于国内报表设计器的分析,很多看客说遗漏了微软的报表服务,本人经过一段时间的补充学习,将本人得出的浅淡的研究说一下,本人是初学者,其中观点可能错误,望大家不吝赐教 ...
- 使用CImage绘制半透明图片
最近对一个项目中的软件进行了一些界面性能的改进,我主要是用CImage替代了一些以前用GDI+实现的内容. 使用中发现CImage对半透明图片的绘制,是有问题的,半透的部分总是显示一些很奇怪的内容(颜 ...
最新文章
- Planetary Science and Life in the Universe
- c语言windows api编程,windows API编程学习
- SAP Fiori架构一览
- dev可以运行mysql文件夹_Linux查看mysql 安装路径和运行路径
- MPA是什么意思?一MPA简介和MPA地位
- scala基础之类和对象
- 英伟达2022财年第二季度获得创纪录营收65.1亿美元
- 左右布局图文排版设计灵感案例
- php 一个电子商城的产品分类字段_你会对这个字段做索引嘛,order by多个字段对索引的影响...
- Java笔试题编程题大全(有详细答案)
- linux系统校对时间与网络时间同步
- 【保姆级】扫雷游戏的设计与实现【C语言】
- 一个Flash开发者从入门到放弃的成长之路
- 使用openpose做的运动检测[附代码]
- 【零基础】极星9.3下单详解
- 去哪儿网2015校园招聘前端笔试题
- 【软件测试】入门答疑,概念
- win10别人ping不通我的电脑解决方案
- CAD专业素材免费分享
- C Primer Plus 第六版 章节课后编程练习答案(下)(缘更)