バージョン

グラデーション効果をプリミティブに適用

PaintElement に備わっている素晴らしい力は、幅広い種類の塗りつぶし効果から派生しており、グラフのグラフィカルな要素を提供します。最も一般的に使用される効果のひとつは、グラデーション塗りつぶしです。グラデーションは、2 色の間、すなわち Fill 色(塗りつぶしにも使用)から FillStopColor 色への漸次的に融合していく変化を描画します。下の図に示すように、グラデーションを使用し、チャート上にさまざまな魅力的な効果を作り出すことができます。

Chart Rendering With Paint Element 02.png

グラデーションはベクトル計算の副産物であり、芸術世界の一部に積極的に取り入れられました。グラデーションの数学的な定義と、ほとんどの画像編集用アプリケーションで理解されているグラデーションの観点には違いがあります。以下の 2 つの図を見てください。

Chart Rendering With Paint Element 03.png
Chart Rendering With Paint Element 04.png

芸術的な観点からは、水平方向のグラデーションは水平線と類似したものとみなされるでしょう。しかし、数学ではグラデーションが表現する漸次的な変化は動きの方向に生じます。したがって水平線のように見える色の流線は、垂直に移動する際の色の変化によって生じます。チャートではグラデーションの数学的な定義を使用します。これは、元の .NET Framework によって提供されるグラデーションと一致しています。画像編集アプリケーションとの一貫性を求める開発者は、一致しないこれら 2 つの定義の間の Impedence-Matching のために独自のロジックを検討することもできます。

以下の例は、任意のボックス(柱状グラフと棒グラフで使用されるプリミティブ形状)を使用し、グラデーションを適用する方法を示します。これでこの例を拡張して、チャートのすべてのプリミティブにグラデーションを適用することができます。

Note

注: Color オブジェクトへのすべての参照は、System.Drawing 名前空間からの .NET Framework の色です。

Visual Basic の場合:

Imports Infragistics.UltraChart.[Shared].Styles
Imports Infragistics.UltraChart.Core.Primitives
...
Private Sub UltraChart1_ChartDrawItem(ByVal sender As Object, _
  ByVal e As Infragistics.UltraChart.Shared.Events.ChartDrawItemEventArgs) _
  Handles UltraChart1.ChartDrawItem
	' ColumnChart から、ボックス プリミティブを取得します。
	If TypeOf e.Primitive Is Box Then
		Dim b As Box = Nothing
		b = CType(e.Primitive, Box)
		If Not b Is Nothing AndAlso b.Row = 0 AndAlso b.Column = 2 Then
			b.PE = b.PE.Clone()
			' Primitives PaintElement Type を Gradient に設定します。
			b.PE.ElementType = PaintElementType.Gradient
			' グラデーションの開始色と終了色を設定します。
			b.PE.Fill = Color.Red
			b.PE.FillStopColor = Color.Black
			' グラデーションの線形方向または形状を設定します。
			b.PE.FillGradientStyle = GradientStyle.ForwardDiagonal
		End If
	End If
End Sub

C# の場合:

using Infragistics.UltraChart.Shared.Styles;
using Infragistics.UltraChart.Core.Primitives;
...
private void ultraChart1_ChartDrawItem(object sender,
  Infragistics.UltraChart.Shared.Events.ChartDrawItemEventArgs e)
{
	// ColumnChart から、ボックス プリミティブを取得します。
	if (e.Primitive is Box)
	{
		Box b = e.Primitive as Box;
		if(b != null && b.Row == 0 && b.Column == 2)
		{
			// Primitives PaintElement Type を Gradient に設定します。
			b.PE.ElementType = PaintElementType.Gradient;
			// グラデーションの開始色と終了色を設定します。
			b.PE.Fill = Color.Red;
			b.PE.FillStopColor = Color.Black;
			// グラデーションの線形方向または形状を設定します。
			b.PE.FillGradientStyle = GradientStyle.ForwardDiagonal;
		}
	}
}
Chart Apply a Gradient Effect to a Primitive 01.png