UltraChar新增目标线
Imports System.IO
Imports System.Data
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports Infragistics.UltraChart.Core
Imports Infragistics.UltraChart.Resources.Appearance
Imports Infragistics.UltraChart.Shared.Styles
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dt = New DataTable()
dt.Columns.Add("Month", GetType(String))
dt.Columns.Add("Leads", GetType(Integer))
dt.Columns.Add("Sales", GetType(Integer))
dt.Rows.Add("January", 120, 50)
dt.Rows.Add("February", 90, 44)
dt.Rows.Add("March", 70, 22)
dt.Rows.Add("April", 66, 21)
dt.Rows.Add("May", 80, 42)
dt.Rows.Add("June", 85, 48)
UltraChart1.Data.DataSource = dt
UltraChart1.Data.DataBind()
UltraChart1.Axis.Y.RangeType = Infragistics.UltraChart.Shared.Styles.AxisRangeType.Custom
UltraChart1.Axis.Y.RangeMax = 200
UltraChart1.Axis.Y.RangeMin = 0
AddHandler Me.UltraChart1.FillSceneGraph, AddressOf UltraChart1_FillSceneGraph
End Sub
Private Sub UltraChart1_FillSceneGraph(ByVal sender As System.Object, ByVal e As Infragistics.UltraChart.Shared.Events.FillSceneGraphEventArgs)
Dim target As Double = 85
Dim axisY As IAdvanceAxis = TryCast(e.Grid("Y"), IAdvanceAxis)
Dim axisX As IAdvanceAxis = TryCast(e.Grid("X"), IAdvanceAxis)
'---------画线的高度
Dim targetYCoord As Integer = CInt(axisY.Map(target))
'---------取X轴起始的横坐标数值
Dim xStart As Integer = CInt(axisX.MapMinimum)
Dim xEnd As Integer = CInt(axisX.MapMaximum)
'---------画线
Dim targetLine As New Infragistics.UltraChart.Core.Primitives.Line(New Point(xStart, targetYCoord), New Point(xEnd, targetYCoord))
targetLine.PE.Stroke = Color.Red
targetLine.PE.StrokeWidth = 5
e.SceneGraph.Add(targetLine)
'---------设置线条显示的提示
Dim targetLabel As New Infragistics.UltraChart.Core.Primitives.Text()
targetLabel.SetTextString("Target: " + target.ToString())
Dim targetLabelSize As Size = Size.Ceiling(Infragistics.UltraChart.Core.Util.Platform.GetLabelSizePixels(targetLabel.GetTextString(), targetLabel.labelStyle))
targetLabel.bounds = New Rectangle(xStart, targetYCoord - targetLabelSize.Height, targetLabelSize.Width, targetLabelSize.Height)
e.SceneGraph.Add(targetLabel)
End Sub
End Class