GDI+绘制的一个Report Designer原型

简介:

  早上看到Pvistely同学在说设计器编程的一些问题,想起来我也曾使用GDI+做过一个报表设计器的原型。刚才翻到了代码,居然已经是整整一年前的东西了,时间过的可真是快啊。当时产品里计划要提供可视化报表设计功能,于是part-time了两个周,做了这么一个原型给Team做方案评估。

    从Demo的效果来看,大家觉得使用GDI+做一个预想的报表的设计器应该没有什么太大问题,只是后来这个功能整个没有通过feature design而作罢了。程序运行效果如图:

    ReportDesigner.png
    本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能对你有任何一小点的帮助,那将是我所乐见的。欢迎对设计器编程感兴趣的博友不吝赐教emsmile.gif


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
24天前
|
设计模式 开发框架 算法
【QML 创建界面】QML界面的动态创建及其其他方法 (Dynamic Creation of QML Interfaces and Other Methods)
【QML 创建界面】QML界面的动态创建及其其他方法 (Dynamic Creation of QML Interfaces and Other Methods)
54 0
|
29天前
|
开发框架 UED 开发者
QML(Qt Quick) 按钮设计指南
QML(Qt Quick) 按钮设计指南
61 0
|
4月前
|
存储 数据可视化 测试技术
[Qt5] QGraphics图形视图框架概述(Item、Scene和View)
[Qt5] QGraphics图形视图框架概述(Item、Scene和View)
138 0
|
7月前
|
XML 数据格式 容器
SAP UI5 SimpleForm 控件实例的初始化调试
SAP UI5 SimpleForm 控件实例的初始化调试
48 0
MPAndroidChart 教程:与图表的交互 Interaction with the Chart
该库允许您完全自定义与图表视图的可能触摸(和手势)交互,并通过回调方法对交互作出反应。 启用/禁用交互 setTouchEnabled(boolean enabled):启用/禁用与图表的所有可能的触摸交互。
1114 0
|
算法 Android开发 数据安全/隐私保护
【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )
【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )
434 0
【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )
|
存储
使用Dynamic Data Display控件绘图时无法删除已经画好的曲线
最近在使用Dynamic Data Display画图的时候发现,多次画图时,之前画的图无法清除,造成图像混乱。找了好久发现这样可以消除。 在调用AddLineGraph时,使用一个全局的变量来存储这个方法返回的对象(LineGraph), 点击...
855 0
在Qt quick5.10-qml中使用drag and drop进行拖拽,及qml拖拽的Bug
在Qt quick5.10-qml中使用drag and drop进行拖拽,及qml拖拽的Bug
|
存储 API
如何使用 controllerExtensions 给 SAP Fiori Elements List Report 的表格注册事件响应函数
如何使用 controllerExtensions 给 SAP Fiori Elements List Report 的表格注册事件响应函数
如何使用 controllerExtensions 给 SAP Fiori Elements List Report 的表格注册事件响应函数
|
SQL 缓存 监控
ABAP Code Inspector那些隐藏的功能,您都知道吗?
ABAP Code Inspector那些隐藏的功能,您都知道吗?
148 0
ABAP Code Inspector那些隐藏的功能,您都知道吗?