MS Charting Annotations拒绝与鼠标位置对齐

时间:2014-08-18 15:27:56

标签: vb.net annotations mschart

有人能告诉我为什么会发生以下情况吗?红线表示注释应该定位的位置(沿X轴),但它总是在左边缘上渲染...我在Google和SO中进行了一些搜索,并且找到了一个答案,暗示PixelPositionToValue(Mouse.X)会对它进行排序,但即使使用它,它也会完全相同。

enter image description here

Private Sub AssignNewDownTime()
    Dim sStr As String = InputBox("Please enter downtime reason")
    Dim annot As New Charting.RectangleAnnotation()

    annot.ClipToChartArea = "Chart1"
    annot.BackColor = Color.DarkRed
    annot.ForeColor = Color.White
    annot.AllowMoving = True
    annot.AllowAnchorMoving = False
    annot.AllowSelecting = False
    annot.IsMultiline = False
    annot.AllowTextEditing = False
    annot.IsSizeAlwaysRelative = False
    annot.X = Chart1.ChartAreas(0).AxisX.PixelPositionToValue(StartMousePoint.X)
    annot.Y = 10
    annot.Width = 25

    annot.Text = sStr & " /X: " & annot.X & "Y:" & annot.Y

    Chart1.Annotations.Add(annot)
    Chart1.Invalidate()
End Sub

1 个答案:

答案 0 :(得分:1)

尔加!总是会发生这种情况......我把头发拉了几个小时,然后在5分钟内将我的头发修好了。无论如何,对于可能也会脱发的后代,这就是解决方案:

注释X和Y不能设置为图表的注释,因此图表的范围是0.0到1.0,注释默认范围是0到100.梦魇!我有几种解决方法,我选择了:

annot.AxisX = Chart1.ChartAreas(0).AxisX

设置注释的X轴以模仿图表的X轴。因此,价值和限制是正确的。一旦我这样做,它立即工作。您当然可以设置注释的AxisY,但要注意在图表中Y从下到上。更多信息可以在这里找到:http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.annotation(v=vs.110).aspx - 具体(我希望我先读...):

  

注释通常用于评论或详细说明数据点等图表元素。注释也可用于绘制自定义形状。   默认情况下,注释使用相对坐标定位,(0,0)表示左上角,(100,100)表示图表图像的右下角。也可以从该相对坐标系切换到使用轴值的系统。使用轴坐标系,X和Y(表示注释左上角的位置)使用X轴和Y轴值设置,而不是0-100范围内的值。   指定注释的位置和大小时,有两种方法可以使用轴值:   将AxisX,AxisY或这两个注释属性设置为ChartArea对象的AxisX和AxisY属性值。   使用AnchorDataPoint属性将注释锚定到数据点。在这种情况下,会自动计算其定位。   所有注释都是从Annotation类派生的,可以用来设置所有Annotation对象共有的属性,例如颜色,位置,锚定等。

无论如何,希望这可以帮助民众。