カスタム レイヤ クラスは、 ILayer インタフェースを実装する必要があります。これを行うには、 UltraChart.Core.Layers.Layer を継承するか、インタフェースを直接実装します。
ILayerを実装するには、各プロパティを格納するプライベートフィールドを作成し、インタフェースに格納されているパブリックプロパティ内にそれらを設定するか返します。
Visual Basic の場合:
Imports System.Collections
Imports Infragistics.UltraChart.Core.ColorModel
Imports Infragistics.UltraChart.Core
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
Imports Infragistics.UltraChart.Core.Util
...
Public Class MyLayer
Implements ILayer
Private _chartCore As ChartCore
Public Property ChartCore() As Infragistics.UltraChart.Core.ChartCore _
Implements Infragistics.UltraChart.Core.Layers.ILayer.ChartCore
Get
Return Me._chartCore
End Get
Set(ByVal Value As Infragistics.UltraChart.Core.ChartCore)
Me._chartCore = Value
End Set
End Property
' その他のインタフェースメンバは省略します。
End Class
C# の場合:
using System.Collections;
using Infragistics.UltraChart.Core.ColorModel;
using Infragistics.UltraChart.Core;
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;
using Infragistics.UltraChart.Core.Util;
...
public class MyLayer : ILayer
{
private ChartCore _chartCore;
public ChartCore ChartCore
{
get
{
return _chartCore;
}
set
{
_chartCore = value;
}
}
// その他のインタフェース メンバは省略します。
}
link:Infragistics.win.ultrawinchart~infragistics.ultrachart.core.layers.ilayer~getinnerbounds.html[GetInnerBounds()] メソッドを実装するには、外枠(OuterBound インタフェース メンバ)を返します。任意の ILayer インタフェース メンバを使用し、開発者は必要に応じて後で変更またはカスタマイズできます。
Visual Basic の場合:
Public Function GetInnerBounds() As Rectangle _ Implements Infragistics.UltraChart.Core.Layers.ILayer.GetInnerBounds Return _outerBound End Function
C# の場合:
public Rectangle GetInnerBounds()
{
return _outerBound;
}
グラフ レイヤ上での枠の設定 :
レイヤを処理してグラフ画像を作成するとき、レイヤはカスケード表示になります。各レイヤで外枠が設定された後、内枠のクエリーが実行されます。これらの内枠は、次のレイヤの外枠として設定され、処理はすべてのカスケードされているレイヤに繰り返されます。
カスタム レイヤでは、開発者はこの規則を守る必要はありません。OuterBounds を任意のサイズと位置に設定し、グラフ上の任意の場所に描画することが可能です。GraphicsContext プリミティブは SceneGraph のクリップ領域をリセットするためにも使用されます。
最後に、 FillSceneGraph メソッドを実装(またはオーバーライド)します。すべてのカスタム レイヤ コードはここに進みます。このメソッドの 1 つの引数は SceneGraph です。SceneGraph はグラフの描画に使用されるプリミティブ(形状)のコレクションです。FillSceneGraph メソッドの実装では、必要なカスタムレイヤの外観や動作を設定するために、SceneGraph 内のオブジェクトの操作や新しいプリミティブの追加を行います。
Visual Basic の場合:
Public Sub FillSceneGraph(ByVal scene As SceneGraph) _ Implements Infragistics.UltraChart.Core.Layers.ILayer.FillSceneGraph ' プリミティブを SceneGraph に追加します。 Dim myCircle As New Ellipse(New Point(100, 100), New Point(100, 100)) myCircle.PE.Fill = Color.Blue scene.Add(myCircle) End Sub
C# の場合:
public void FillSceneGraph(SceneGraph scene)
{
// プリミティブを SceneGraph に追加します。
Ellipse myCircle = new Ellipse((new Point(100, 100)), (new Point(100, 100)));
myCircle.PE.Fill = Color.Blue;
scene.Add(myCircle);
}
ILayer の実装が完了すると、レイヤを Chart に付加できます。
Visual Basic の場合:
Private Sub WritingaLayerClass_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
' レイヤを追加します
Me.UltraChart1.Layer.Add("My Layer", New MyLayer())
Me.UltraChart1.UserLayerIndex = New String() {"Default", "My Layer"}
Me.UltraChart1.InvalidateLayers()
Me.UltraChart1.DataSource = GetColumnData()
End Sub
C# の場合:
private void WritingaLayerClass_Load(object sender, System.EventArgs e)
{
// レイヤを追加します
this.ultraChart1.Layer.Add("My Layer", new MyLayer());
this.ultraChart1.UserLayerIndex = new string[] {"Default", "My Layer"};
this.ultraChart1.InvalidateLayers();
this.ultraChart1.DataSource = GetColumnData();
}