要做一个组件,供程序调用的,要实现能够调整大小,角度,颜色。用法类似下图中的红框。
比如VB程序有个地图,在程序运行期间能够实现控件的添加、移动、旋转、缩放、删除、保存。
图中可以放置图标。
二, 需求分析1) 控件具有长宽、角度、颜色(线框、填充)、粗细、可编辑等属性。
2) 控件具有创建、消除、移动、旋转等方法。
3) 控件移动和旋转时底色透明,不遮盖底图。
4) 控件能在程序运行期生成,由代码控制。控件布局能保存和载入。
5) 控件能显示指定图标。
三, 实现思路在Delphi中封装ActiveX控件,在VB中调用。
序号
名称
路径
用途
1
原始控件
TRotateImageV154
实现图像旋转
2
控件修改
TRotateImageV154(MOD)
1,将RotImg.pas中TRotateImage从TGraphicControl继承,改为从TCustomControl继承
2,为使其底色透明,增加CreateParams和WMEraseBkGnd方法。
3
控件安装
将以上TRotateImage类安装为Delphi面板控件
用于下一步生成activeX控件
4
生成activeX控件
delphi控件(MOD)
1, 从TRotateImage控件生成TRotateImageX这个TActiveXControl控件。编译OCX并注册,以便用于VB环境
2, 增加IRotateImageX 类型库的方法和属性
3, 增加鼠标操作响应函数
4, 其它
四, 测试结果
支持的最大矩形数目1500个,每个矩形控件约消耗内存60K。
矩形个数
操作类型
耗时(秒)
内存消耗(M)
程序是否可正常工作
500
生成
正常
删除
正常
载入
正常
1000
生成
8
60
正常
删除
3
正常
载入
8
60
正常
1500
生成
12
90
正常
删除
4
正常
载入
12
90
正常
2000
生成
16
120
有时正常有时不正常
删除
6
载入
17
有时正常有时不正常
装载1000个控件前: 装载1000个控件后: 装载1500个矩形后: