このトピックは FillSceneGraph イベントを使用してチャートを描画する前にチャート間でプリミティブを追加/削除する方法を示します。このイベントを使用すると、カスタムのレイヤ クラスを作成する必要性を排除します。
以下の手順を完了した後でアプリケーションを保存および実行すると、チャートは以下の画像のようになります。
FillSceneGraph イベントを使用してシーン グラフを変更するには、次の手順に従ってください。
コードの記述を開始する前にコードビハインドに使用/インポートのディレクティブを配置します。そうすれば、メンバーは完全に記述された名前を常にタイプする必要がなくなります。
Visual Basic の場合:
Imports Infragistics.UltraChart.Core.ColorModel Imports Infragistics.UltraChart.Core.Util Imports Infragistics.UltraChart.Core.Layers Imports Infragistics.UltraChart.Core.Primitives Imports Infragistics.UltraChart.Data Imports Infragistics.UltraChart.Resources Imports Infragistics.UltraChart.Resources.Appearance Imports Infragistics.UltraChart.Resources.Editor Imports Infragistics.UltraChart.Shared.Styles
C# の場合:
using Infragistics.UltraChart.Core; using Infragistics.UltraChart.Core.ColorModel; using Infragistics.UltraChart.Core.Util; using Infragistics.UltraChart.Core.Layers; using Infragistics.UltraChart.Core.Primitives; using Infragistics.UltraChart.Data; using Infragistics.UltraChart.Resources; using Infragistics.UltraChart.Resources.Appearance; using Infragistics.UltraChart.Resources.Editor; using Infragistics.UltraChart.Shared.Styles;
FillSceneGraph イベントを作成します。
Visual Basic の場合:
Private Sub UltraChart1_FillSceneGraph(ByVal sender As System.Object, _ ByVal e As Infragistics.UltraChart.Shared.Events.FillSceneGraphEventArgs) _ Handles UltraChart1.FillSceneGraph
C# の場合:
private void ultraChart1_FillSceneGraph(object sender, Infragistics.UltraChart.Shared.Events.FillSceneGraphEventArgs e)
機能をマッピングするために必要なので x 軸値と y 軸値を取得します。
Visual Basic の場合:
Dim xAxis As IAdvanceAxis = CType(e.Grid("X"), IAdvanceAxis) Dim yAxis As IAdvanceAxis = CType(e.Grid("Y"), IAdvanceAxis)
C# の場合:
IAdvanceAxis xAxis = (IAdvanceAxis)e.Grid["X"]; IAdvanceAxis yAxis = (IAdvanceAxis)e.Grid["Y"];
Visual Basic の場合:
Dim [text] As New [Text]() [text].PE.Fill = Color.Red [text].bounds = New Rectangle(CInt(xAxis.Map(8)), CInt(yAxis.Map(10)), 100, 20) [text].SetTextString("Sample Text")
C# の場合:
Text text = new Text(); text.PE.Fill = Color.Red; text.bounds = new Rectangle((int)xAxis.Map(8), (int)yAxis.Map(10), 100, 20); text.SetTextString("Sample Text");
テキスト Primitive を SceneGraph に追加します。
Visual Basic の場合:
e.SceneGraph.Add([text])
C# の場合:
e.SceneGraph.Add(text);
Box Primitive を作成して以下の値を設定します:
Color — Blue
Stroke Color — Red
Stroke Width — 3
Row — 0
Column — 0
Layer — GetChartLayer()
Chart — ChartType
Value — 42
Caps — PCaps.HitTest | PCaps.Tooltip
Visual Basic の場合:
Dim box As New Box(New Rectangle( _ CInt(xAxis.Map(5)), CInt(yAxis.Map(10)), 70, 20)) box.PE.Fill = Color.Blue box.PE.Stroke = Color.Red box.PE.StrokeWidth = 3 box.Row = 0 box.Column = 0 box.Layer = e.ChartCore.GetChartLayer() box.Chart = Me.UltraChart1.ChartType box.Value = 42 box.Caps = PCaps.HitTest Or PCaps.Tooltip
C# の場合:
Box box = new Box(new Rectangle( (int)xAxis.Map(5), (int)yAxis.Map(10), 70, 20)); box.PE.Fill = Color.Blue; box.PE.Stroke = Color.Red; box.PE.StrokeWidth = 3; box.Row = 0; box.Column = 0; box.Layer = e.ChartCore.GetChartLayer(); box.Chart = this.ultraChart1.ChartType; box.Value = 42; box.Caps = PCaps.HitTest | PCaps.Tooltip;
Box Primitive を SceneGraph に追加します。
Visual Basic の場合:
e.SceneGraph.Add(box)
C# の場合:
e.SceneGraph.Add(box);
アプリケーションを保存して実行します。