Annotations 注释
演示示例: Annotations; Custom rendering; Intensity grid mouse control; Multi-channel cursor tracking; Stocks and bars; Annotations table
注释可以在图表区域的任何地方显示鼠标交互的文本标签或图形。注释可以通过鼠标移动,调整大小,旋转,它们的对象和位置可以改变。或者可以通过代码来控制这些操作。如果必须在屏幕上渲染自定义图形,注释也很有用,因为它们可以以不同的样式和形状呈现。在ViewXY.Annotations 集合中创建AnnotationXY对象。
当移动鼠标至注释上方时,可进入鼠标交互的编辑状态。此时可以对注释重定位,调整其大小,旋转,并指定箭头指向哪里。
图. 移动鼠标至注释上方进入编辑状态;移走鼠标则退出编辑状态
图. 各种样式的AnnotationXY 对象,分置与一条线系列周围。用Style 属性选择注释形状。
控制对象(Target)和位置(Location)
Target为箭头终点所指,即箭头或标注尖端所指向的点。Target 可以在轴值或在屏幕坐标中设置;具体可以用 TargetCoordinateSystem 在AxisValues和ScreenCoordinates二者中选择。如果选择了、AxisValues ,通过TargetAxisValues 属性设置箭头线指向的位置(箭头线的末端);另外一个则是通过TargetScreenCoords 在屏幕坐标中设置。
Location 是箭头的起始点,可以通过屏幕坐标、轴值或者与Target的相对偏移量来设置。用 LocationCoordinateSystem 在LocationScreenCoords、LocationAxisValues 或 LocationRelativeOffset 三个方法中进行选择来控制位置。 Location还是文本区域旋转的中心点。
Anchor 属性控制着文本区域在Location上的放置方式。设置Anchor.X = 0.5 且 Anchor.Y = 0.5,箭头的起点居于中间;设置 Anchor.X 0.1 且 Anchor.Y = 0.25,箭头起点位于如下图所示的靠近左上角:
图. Anchor 值说明; Current Anchor.X = 0.1 且 Anchor.Y = 0.25. 当 anchor 值在 0…1 内,箭头起始点便位于文本区域
内部。
用鼠标来移动、旋转及调整大小
图. 注释的鼠标交互节点
从 Target 拖动可移动箭头的末端。从文本区域拖动可设置新的Location。通过拖动圆形的location/锚节点,可以同时调整Anchor 和 Location 属性,将文本框保持在相同的位置。
按住 Shift 键,然后拖动resize (X)或resize (Y)节点来调整大小, 采用对称操作,两边会同时调整。按住Shift 键,然后从角位置上的节点resize (X+Y)拖动,在调整大小时还会保留屏幕纵横比。在旋转操作时,Shift 键可帮助以最近的15 度倍数的旋转角度转动。
调整外观
通过设置Style属性可选择注释的外形;其中的选项有:Rectangle、RectangleArrow、RoundedRectangle、RoundedRectangleArrow、Arrow、Callout、RoundedCallout、Ellipse、EllipseArrow、Triangle 和 TriangleArrow。
如果样式中带有箭头,可使用ArrowLineStyle、ArrowStyleBegin 和 ArrowStyleEnd 来控制箭头的图案。箭头末端的样式有以下几个选项: None、Square、Arrow、Circle 和 Caliper。
用 Fill 可修改注释的填充效果。编辑状态的鼠标交互节点外观可以从NibStyle中进行更改。用 TextStyle 则可以控制文本区域内的字体设置与文本对齐情况。用BorderLineStyle 和 CornerRoundRadius 可以控制边框线条的外观。
尺寸大小设置
用Sizing 属性可控制注释文本框的大小:
• Automatic 根据内容来调整大小,并给边框留出AutoSizePadding空间。
• AxisValuesBoundaries 可以根据轴值来设置注释的尺寸,具体可以用AxisValuesBoundaries.XMin、 XMax、 YMin 和 YMax来定义。
• ScreenCoordinates 可以通过屏幕坐标来设置尺寸,具体可以使用到SizeScreenCoords.Height 和 Width。
保持文本区域可见
开启 KeepVisible 后,注释的文本区域被强制放在图形内部,这时用鼠标或通过代码移动注释时,都不会将其移动到图形外。在平移图形视图或调整轴时,将重新定位注释以显示在图形内部。
在轴上显示注释
设置 RenderBehindAxes = True,注释显示在轴的下方。所有的剪辑和Z序功能在这种情况下都无法使用。如果设置ClipInsideGraph为true,则RenderBehindAxis不会起作用。
图. 左侧, RenderBehindAxes = True;右侧, RenderBehindAxes = False. 二者中的ClipInsideGraph 都设置为False
图形内剪辑
开启 ClipInsideGraph 后,可在图形内部对注释剪辑。禁用后,注释也可在图表的图边距区域渲染。
开启 ClipWhenSweeping后,当设置ScrollMode为Sweeping模式时,注释不会在扫描间距区域显示。
控制Z序
当设置 Behind 属性为其默认值False时,注释显示在系列的上方。当设置为True时,注释在系列之前渲染,因此会出现在系列的下方。
注释按照它们在注释列表中的顺序显示,同时将Behind筛选程序作为主控制器。采用注释的ChangeOrder方法,例如鼠标事件处理程序,注释的Z序能够快速更改。用以改变Z序的选项有:
• BringToFront 注释处于最前
• SendToBack 置后
• MoveBack 向后移动一步
• MoveFront 向前移动一步
LayerGrouping性能优化
当要显示数百个带有可见文本的注释时,文本渲染延迟便开始产生重要的影响。默认情况下,文本渲染按照Z序进行,让文本牢牢地保留在注释中。
设置LayerGrouping = True,可以提高性能,而且图表将只使用两个平面注释文本层。一个用于设置Behind为True的注释,另一个用于设置Behind为的False注释。这可以大大提高性能。另一方面,如果有注释与其他注释重叠,则文本将出现渲染错误。
图. 左侧, LayerGrouping = False;右侧, LayerGrouping = True, 文本的Z序丢失。
当采用 Style = Arrow 或设置注释填充不可见时,通常不会出现Z序的限制。
轴的值与屏幕坐标之间的转换
在一些情况中, Location 或 Target 可能需要在混合配置中加以定义,如屏幕坐标中的为X,轴的值为Y,反之亦然。采用轴ValueToCoord的方法可以将一个轴的值转换为一个屏幕坐标,用CoordToValue可以将一个屏幕坐标转换为一个轴的值(如第LightningChart数据可视化工具使用篇16-Y轴-数轴值与屏幕坐标的转换章节所述)。
遇到使用问题,关注Arction公众号可以跟官方技术支持在线聊天解决,技术支持这一块儿Lightningchart做的还是不错的。
最新版V10 LightningChart下载地址:猛击下载
|