期货量化软件:赫兹量化应用程序中运用 CCanvas 类

我们来研究这些方法:

  • Creation/attachment/removal 方法。 该类别拥有操控图表对象的不同方法。 以下是创建图形对象的方法:CreateBitmap 和 CreateBitmapLabel。 它们用于创建图表对象,和与之相关的图形资源,然后在图表上显示图像。 挂载方法: Attach。 如果图表提供的 OBJ_BITMAP_LABEL 图形对象含有或不含附带的图形资源,CCanvas 处理该对象的方式与处理新创建的图形对象的方式相同。 只需调用相应的 Attach 方法将其挂载即可。 Removal 方法由 Destroy 调用。 它移除图形对象,并释放与图表对象相关的图形资源和 m_pixels 像素缓冲区数组。 因此,在 CCanvas 完成时,我们应该始终调用 Destroy 方法,因为该类不会自动删除其图表对象和图形资源。

  • 从文件加载图像的方法。 LoadBitmap 静态方法,能够从 *.bmp 文件里加载一幅图像,将之保存到从参数传递来的某个地址指向的任何 uint 数组当中;同时将得到的图像尺寸保存到 “width” 和 “height” 变量中,这些变量也作为参数通过相应的地址传递给该方法。 LoadFromFile 方法从 *.bmp 文件里加载一幅图像到 m_pixels 数组,并设置 m_width 和 m_height 图像参数。 m_format 的像素格式应等于 COLOR_FORMAT_ARGB_RAW。

  • 读取图表对象属性的方法包括 ChartObjectName、ResourceName、Width 和 Height,并相应地返回图表对象名、图形资源名、图像宽度和高度。 这些方法允许用户仅读取一些与图表交互的数据,包括 m_objname、m_rcname 以及m_width 和 m_height 图像数据。

  • 读取/写入显示文本字体属性的方法。 首先,我们来研究 FontNameSet、FontSizeSet、FontFlagsSet 和 FontAngleSet 写入方法。 这些方法分别对应设置字体名称、字号、属性、和显示文本的倾斜角度。 现在我们来研究读取方法。: FontSizeGet、FontFlagsGet 和 FontAngleGet。 这些方法分别返回字号和属性,以及显示文本的倾斜角度。 还有一些接收/设置字体属性的方法,可以一次返回/设置所有字体属性。 设置属性的方法 FontSet 分别设置字体名称、字号、属性、和显示文本的倾斜角度。 接收属性 FontGet 的方法分别返回显示文本的字体名称、字号、属性、和倾斜角度。

  • 读/写线条绘图样式的方法。 LineStyleGet 方法用于读取,而 LineStyleSet 用于写入。 线条样式对于处理 LineAA、PolylineAA、PolygonAA、TriangleAA、CircleAA、EllipseAA、LineWu、PolylineWu、PolygonWu、TriangleWu、CircleWu、EllipseWu、LineThickVertical、LineThickHorizontal、LineThick、PolylineThick 和 PolygonThick 图形图元的绘图方法是必需的。

  • 依据像素数组绘制的方法。 CCanvas 类有许多使用各种算法绘制图形图元的方法,令用户能够使用渐进平滑方法创建复杂图形,包括抗锯齿、Wu 算法和 Bézier 曲线。 我们来研究一下这些方法。 不带平滑的简单图元: LineVertical, LineHorizontal, Line, Polyline, Polygon, Rectangle, Triangle, Circle, Ellipse, Arc 和 Pie。 这些方法分别绘制以下图元:垂直线、水平线、手绘线、多段线、多边形、矩形、三角形、圆、椭圆、圆弧、和填充椭圆扇形。 填充图元: FillRectangle, FillTriangle, FillPolygon, FillCircle, FillEllipse 和 Fill。 这些方法分别在区域中绘制填充的矩形、三角形、多边形、圆形、椭圆形。 通过抗锯齿平滑绘制图元的方法 (AA): PixelSetAA, LineAA, PolylineAA, PolygonAA, TriangleAA, CircleAA 和 EllipseAA。 这些方法分别填充像素和显示手绘线、多段线、多边形、三角形、圆形、和椭圆形等图元。 使用 Wu 算法绘制图元的方法: LineWu, PolylineWu, PolygonWu, TriangleWu, CircleWu 和 EllipseWu。 这些方法分别绘制手绘线、多段线、多边形、三角形、圆形、和椭圆形。 经过初步整理的抗锯齿和可调线宽的图元绘制方法: LineThickVertical, LineThickHorizontal, LineThick, PolylineThick 和 PolygonThick。 它们分别用于绘制以下图元:垂直线、水平线、徒手线、多段线、和多边形。 利用 Bézier 方法绘制平滑图元的方法: PolylineSmooth 和 PolygonSmooth。 这些方法分别绘制平滑直线和平滑多边形。 除了上述方法外,该类别还包括用于显示文本的 TextOut 方法,因为它还改变像素数组中的颜色值,尽管它落于初始 CCanvas 类代码中的文本处理方法组。

  • 传递图像以便在图表上显示的方法。 该类别包括两种方法。 Update 方法通过 m_pixels 数组,把图形资源传递给欲在图表上显示的相关图像对象。 正如我曾提过的,在上述绘制方法的帮助下改变 m_pixels 像素数组中的数据。 Resize 方法更改 m_pixels 数组大小(图像尺寸),并将其传递给图形资源。

  • 服务。 CCanvas 提供两种服务方法:GetDefaultColor 返回重定义的颜色,而 TransparentLevelSet 通过更改 m_pixels 数组中的 alpha 通道值,来更改图像透明度。

  • 其它设置。 此处我们有一个用于设置抗锯齿过滤器的 FilterFunction 方法,它为名称中包含 AA 符号的所有绘图方法设置过滤器。

CCanvas 类 在私密区域中有字段和方法。 我不打算在文章中讲述它们,因为它们是内部方法,不可由 CCAVAS 衍生后代类重新定义。 您可以在 MetaEditor 中的 Canvas.mqh 模块源代码里找到它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值