期货量化软件:赫兹量化中复合图形对象控件
概述
在本文中,我将继续开发复合图形对象。 这些是标准的图形对象,由多个图形对象组成,并组合成单一的图形对象。 在函数库中,复合图形中包含的图形对象被定义为扩展标准图形对象。 此类对象拥有一些附加属性和功能,令它们能够合并为其它图形对象。 复合图形对象的概念要求在父对象变更或重新定位时,将对象保持在其所附对象上,并调整其相对位置。 在上一篇文章中,我开始创建复合图形对象事件的处理程序,它实现了复合图形对象的移除处理,并启动开发其重新定位处理程序。
今天,我从复合图形对象重新定位的内容稍微离题 ,并实现图表上复合图形对象的变更事件处理。 此外,我将重点讲解管理复合图形对象的控件。 为什么呢? 我将实现复合图形对象的实时创建 — 通过把从属对象拖拽到基准对象上,实现把从属对象附加到基准对象。 如果用鼠标拖动另一个对象,则基准图形对象将跟踪该对象。 在距离某个图表定位点一定距离处启用对象附着机制。 连接附着对象定位点与基准对象定位点的连线会被直观地显示,表明拖动的对象已准备好附着到基准对象。 为达成这一点,图形对象的每个定位点都应该拥有一个大小确定的窗体对象。 进入窗体对象区域将激活附着机制,而指示对象已准备好进行交互的线条则会显示在窗体本身上。 这样的窗体在图形对象的每个轴点上都是不可见的。 只能在调试时,通过启用沿窗体边缘绘制矩形,来查看区域大小:

编辑
此外,窗体显示图形对象定位点,这些定位点仅在鼠标光标悬停在窗体活动区域上时才会出现。 因此,我们就能够通过把鼠标光标悬停在窗体区域上,而不必鼠标单击高亮显示来移动和修改扩展图形对象。 一旦我们将光标悬停在窗体的活动区域(上面的图像上用矩形标记)上时,标签就会出现在图形对象定位点(圆圈中心的蓝点)中。 如果我们开始用鼠标拖动窗体,图形对象的相应轴点将跟随光标,其所附复合图形对象会一起修改。 如果按住鼠标按钮并把光标拖入窗体活动区域,这意味着(如果验证)我们将另一个图形对象附着于窗体,从而激活把一个对象绑定到另一个对象的机制。 因此,这些窗体允许我们一次性完成几个目标。
我不打算在这里实现将一个对象连接到另一个对象,因为准备工作还没有完成。 取而代之,我将创建窗体,将它们附加到图形对象定位点,并在更改图表时实现沿对象轴点坐标移动它们的机制 — 重新定位图表、或更改其显示比例。 如此做,是因为窗体对象的坐标以屏幕像素为单位,而大多数图形对象以时间/价格值显示。

