GDI+绘制的一个Report Designer原型
早上看到Pvistely同学在说设计器编程的一些问题,想起来我也曾使用GDI+做过一个报表设计器的原型。刚才翻到了代码,居然已经是整整一年前的东西了,时间过的可真是快啊。当时产品里计划要提供可视化报表设计功能,于是part-time了两个周,做了这么一个原型给Team做方案评估。
从Demo的效果来看,大家觉得使用GDI+做一个预想的报表的设计器应该没有什么太大问题,只是后来这个功能整个没有通过feature design而作罢了。程序运行效果如图:
本demo实现features如下:
1、完全的自定义控件支持;
2、Drag&Drop方式添加控件到容器中;
3、多控件选取支持;
4、多控件移动支持;
5、Z-Order支持;
6、标签控件编辑(double click);
7、Image控件图片载入;
8、8方向resize控件;
9、无限级zoom设计器和控件。
当然问题也很多,毕竟这只是一个demo。其中主要的问题有:
1、没有作绘图优化,OnPaint里直接绘制所有的对象;
2、Zoom后resize功能有bug,比例计算有问题;
3、Redo & Undo,Copy & Paste未实现;
4、没有实现容器的无限区域滚动支持。
虽然公开源码,但不得不说这是一个没有经过太多推敲的设计,它只是给出了一种设计的思路和实现。如果您能在以后设计中避免其中的问题和不足,我的希望就达到了。如果这个demo能对你有任何一小点的帮助,那将是我所乐见的。欢迎对设计器编程感兴趣的博友不吝赐教。
源代码下载
转载于:https://www.cnblogs.com/birdshome/archive/2005/09/20/ReportDesigner.html
GDI+绘制的一个Report Designer原型相关推荐
- GDI绘制时钟效果,与系统时间保持同步,基于Winform
2019独角兽企业重金招聘Python工程师标准>>> 这是直接在Winform的基础上进行绘制的.接下来,我对时钟进行了封装,封装成一个名为CSharpQuartz的类,效果如下: ...
- C# 数据库系统中使用GDI+绘制柱状图
在C#+SQL Server数据库做系统中,通常需要对数据库中的数据进行绘制图形报表方便经理查看,虽然有很多实用的水晶报表控件和图表控件实现该功能,但我还是想讲讲如何使用GDI绘制简单的柱状图.(推荐 ...
- MFC+GDI+绘制出雷达余晖效果
MFC+GDI+绘制出雷达余晖效果 1.首先要画出静态的坐标轴,用双缓冲方法在onpain消息中绘制.绘制方法都比较简单.声明一个内存DC,绘制一个圆形,再把坐标轴画上去. void CDlg_Rad ...
- Windows平台RTMP|RTSP播放器为什么要兼容GDI绘制
为什么要支持GDI 先说结论,Windows平台播放渲染这块,一般来说99%以上的机器都是支持D3D的,实现GDI模式绘制,除了为了好的兼容性外,在远程连接的场景下,D3D创建不成功,需要使用GDI模 ...
- 使用GDI+绘制高质量图和字体(2)
还记得前段时间的一篇文章写了"使用GDI+绘制高质量图和字体",里面用到了SmoothingMode.HighQuality,CompositingQuality.HighQual ...
- 椭圆形印章核心算法浅析及使用GDI+绘制椭圆印章的方法
1. 引言 几年前,笔者在做某项目时,需要根据开票方的实际信息(含企业名称,社会信用代码,印章编号)绘制某椭圆形的专用章,加盖到PDF版式文件上,并使用开票方的证书信息进行签名,以防范版式文件伪造.抵 ...
- D2D引擎与GDI\GDI+绘制效果对比
本例主要是对比D2D和GDI在绘制文字.线条的区别,以及D2D与GDI+在绘制图片时的区别. D2D是基于COM组件开发的,使用前的CoInitialize(NULL)是必须的:另外,GDI+的初始化 ...
- 在VC中用GDI+绘制角度可变的颜色渐变效果-.NET教程,VB.Net语言[转]
在VC中用GDI+绘制角度可变的颜色渐变效果-.NET教程,VB.Net语言 作者:网友供稿 点击:4 gdi+ 是gdi(windows 早期版本提供的图形设备接口)的后续版本,是microsoft ...
- Pentaho Report Designer 教程(一)初识
软件版本 Pentaho Report Designer 5.0.1-stable 一.Pentaho Report Designer 的安装 Pentaho Report Designer(PRD) ...
最新文章
- R语言编写自定义描述统计计算函数、使用doBy包的summaryBy函数计算不同分组(group)的描述性统计值(Descriptive statistics by group、样本个数、均值、标准)
- HADOOP常见错误
- Linux Priority VS Nice
- *27.硬实时和软实时
- 从零开始入门 K8s | Kubernetes 调度和资源管理
- 亿级流量场景下的平滑扩容:TDSQL的水平扩容方案实践
- 回溯法解决工作分配问题及分析
- DHCP***的防御处理总结
- c# mysql 封装_C#简单通用的数据库连接封装
- ajax,jsonp,axios面试题
- 决定创业失败的除了团队外
- 20-21-2网络管理quiz1
- python循环语句打印矩形_pycharm软件python的一些循环语句的用法
- 跨平台日志清理工具 Log-Cutter v2.0.1 RC-1 发布
- 【语音隐写】基于matlab LSB语音隐藏【含Matlab源码 431期】
- pyspark调用spark以及执行带in语句参数的hql示例
- 数字抽奖小程序_两款火爆的抽奖小程序,最高抽2000元现金红包 亲测提现8.59元秒到...
- 程序集版本号,文件版本号及发布版本号管理
- 微信小程序-菜谱APP
- java中如何输入字符
热门文章
- 安全研究员俩娃徒手绕过 Linux Mint 屏保和密码,并成功访问桌面
- 关于CVE-2020-14882,你需要知道的都在这里
- 黑客可利用 TeamViewer 缺陷远程窃取系统密码
- RecyclerView之自定义LayoutManager和SnapHelper
- 武汉区块链软件技术公司区块链将如何应用于会员生态系统?
- 2018.11.05-4028-撸串(string)
- 论坛模块_版块管理_增删改查实现上下移动
- gdb 初步学习记录
- android与服务器交互总结(json,post,xUtils,Volley)
- MySQL服务器安装完之后如何调节性能