构建HTML图像映射的编辑器

时间:2011-12-09 01:20:03

标签: html delphi data-structures delphi-7 imaging

要点:

我开始使用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没有图像映射的概念,它们遍布整个代码。因此,我不打算为此找到一个工具(当然这是解决这个问题的简单方法),而是制作我自己的工具。

图片:

Beginnings of Editor

问题:

混淆开始于决定暂时将Hotspot区域的主要数据存储在内存中的位置......

  • 直接在HTML代码中?
  • 在TList中?
  • 在TStringList中?
  • 在数组?
  • 在TListView中,我显示了一个热点列表?

这是我要问的主要问题。

我估计每个人都有起伏。但是当我考虑HTML编辑器时,整个事情就被抛弃了。当在3个编辑选项卡(图像,HTML或热点列表)中的任何一个中完成修改时,它必须以某种方式将这些更改同步到其他两个编辑器。因此,如果在图像上绘制一个新的热点,我当然可以把它放到HTML没问题。但是使用纯HTML代码作为主要来源呢?无论如何,我将构建/解析它,但我担心它的表现。但话说回来,我可以建立一个很好的后端课程来保持一切。哪个主要考虑?

结论:

所有这一切归结为我应该将主要数据保存在HTML源代码,列表视图项目,自定义列表类(THotspots)还是在哪里?

非常感谢任何提示,技巧或建议。

PS:

我确实经常问很长的问题,对不起!

1 个答案:

答案 0 :(得分:1)

由于种种原因,我决定使用原始HTML作为数据的基础。我最初担心使用这种方法的性能,但是因为我发现了Delphi的this HTML parser component,性能不是问题。这个解析器可以在1秒内完成50,000个标签。

使用核心HTML的核心优势是我可以以原始格式维护HTML数据。任何其他方法很可能导致每次我需要时都必须重新生成HTML,这将以我的应用程序放入的任何格式出现。但由于我现在有了这个解析器,所以很容易简单地改变标记属性。一只眼睛。