一个地图标记控件的开发

要做一个组件,供程序调用的,要实现能够调整大小,角度,颜色。用法类似下图中的红框。

比如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个矩形后:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdsds.html