【发布时间】:2011-12-09 01:20:03
【问题描述】:
总结:
我开始使用 Delphi 7 构建一个用于创建/编辑 HTML 图像映射或图片中的“热点”的工具。应用程序的概念很清楚,如下所述。我以前做过类似的项目,我相信我可以用我自己采取的任何方法来做到这一点。我需要帮助的是找出如何将图像映射存储在内存中的最佳方法。
图像映射可能如下所示:
<MAP NAME="someImageMap">
<AREA SHAPE="RECT" COORDS="10,28,54,51" HREF="some_page.htm">
<AREA SHAPE="RECT" COORDS="54,28,111,50" HREF="some_other_page.htm">
<AREA SHAPE="RECT" COORDS="111,28,199,49" HREF="another_example.htm">
</MAP>
<IMG border=0 src="../images/SomeImage.png" width=571 height =451
isMap useMap=#someImageMap />
AREA 是图像中的一个区域,给定形状和坐标,用于放置不可见的超链接。他们也被称为Hotspots。
背景
我有一个 HTML 格式的巨大帮助文件,以前在 HelpScribble 软件中,但现在我们使用的是 WinCHM。 HelpScribble 有一个名为 SHGEditor 的工具,它为我完成了所有这些映射。但是 WinCHM 没有图像映射的概念,它们到处都是代码。因此,与其试图为此寻找工具(这当然是解决此问题的简单方法),不如自己制作一个。
图片:
问题:
混乱始于决定将Hotspot 区域的主要数据临时存储在内存中的何处...
- 直接在 HTML 代码中?
- 在 TList 中?
- 在 TStringList 中?
- 在数组中?
- 在我显示热点列表的 TListView 中?
这是我要问的主要问题。
我猜每一个都有它的起起落落。但是当我想到 HTML 编辑器时,整个事情就被抛弃了。当在 3 个编辑选项卡(图像、HTML 或热点列表)中的任何一个中完成修改时,它必须以某种方式将这些更改同步到其他两个编辑器。所以如果在图像上绘制了一个新的热点,我当然可以把它转成 HTML 没有问题。但是使用纯 HTML 代码作为主要来源呢?无论如何我都会构建/解析它,但我担心它的性能。但话又说回来,我可以建立一个很好的后端类来保留一切。主要考虑哪个?
结论:
所以这一切都归结为我应该将主要数据保留在 HTML 源、列表视图项、自定义列表类 (THotspots) 中还是在哪里?
非常感谢任何提示、技巧或建议。
PS:
事实上,我确实经常问很长的问题,抱歉!
【问题讨论】:
-
我想问一下,您打算如何存储热点数据?我的意思是永久-在数据库中,在某些结构化文件中?我个人更喜欢将它们存储到数据库中(有轻量级解决方案,例如SQLite),将它们加载到记录数组中(您将在某些列表组件中显示)并通过构建 HTML 代码动态呈现它们(如果您打算拖动地图,您可以随时准备边界后面的框架)。附言- 抱歉我的编辑,它被接受得太晚了,我没有足够的声誉:)
-
不,没有数据库或文件(虽然我正在考虑为此制作自己的文件格式 :D) 我的初衷是从设置中获取 HTML。但我正在将编辑器作为一个更大的项目。
-
从设置中构建 HTML 是很容易的部分,阅读它很棘手但仍然很有可能,但是构建一个完整的编辑器......每个选项卡之间的同步将是巨大的。
-
现在我明白了,你的意思。您想选择一种数据类型来存储最适合在
Map Image View、Map Design View、Map HTML Editor和Hotspot List之间进行同步的数据类型 -
我倾向于保留原始 HTML 源作为主要位置,但我担心性能...
标签: html delphi data-structures delphi-7 imaging