代码之家  ›  专栏  ›  技术社区  ›  Mac

如何在delphi中开发绘图应用

  •  1
  • Mac  · 技术社区  · 17 年前

    我需要在delphi中开发一个应用程序,其中我有一个tdrawgrid控件,根据我选择的布局类型,一个图像显示在网格的单元格中。我在牢房的画布上画了一条线。我需要提供的功能是绘制一条线,在一个imgae上绘制多条线来显示单元格,选择任意一条线并移动它,展开它,删除它。

    是否有任何方法可以使这些行在运行时成为控件,以便它们都响应鼠标事件。

    3 回复  |  直到 14 年前
        1
  •  3
  •   mghie    17 年前

    我建议不要将绘图对象实现为非窗口VCL控件。你不会从中得到什么,但是有些事情(比如命中测试)会比你自己编写代码困难得多。

    VCL控件是矩形的,因此对于平行对角线,一个控件将位于另一个控件的顶部,至少部分位于另一个控件的顶部。通常,鼠标事件只到达z顺序中最顶端的控件。这是你必须在自己的代码中纠正的。

    选定的行应标记端点,以便用户知道在何处获取它们以进行移动或调整大小。同样,自定义控件不提供(在运行时),因此您必须对此进行编码。

    我可能只需要创建一个Line对象类,并实现所有创建、绘制、选择、移动和调整大小、删除行的功能。

        2
  •  1
  •   Toon Krijthe    17 年前

    您可以创建自定义控件。(请务必查看组件编写器手册,因为有一些捕获)。

    您可以开始查看tshape控件。它用于简单的形状。也许你可以在上面扩展以支持线。

        3
  •  1
  •   moobaa    17 年前

    在过去,我创建了一个网络设计应用程序,它使用形状、文本和连接线。我用了devexpress' ExpressFlowChart 产品,虽然它有一些缺点,使任务相对简单。

    正如mghie提到的,命中测试是一个特别有问题的痛点。很高兴有人帮你搬这么重的东西。