ホーム
ブログ
フォーラムとナレッジベース
フォーラム
»
NetAdvantage Windows Forms
»
データ ビジュアライゼーション
»
【KBJ10012】積層型柱状チャートの凡例の表示順をチャート要素に合わせるには
【KBJ10012】積層型柱状チャートの凡例の表示順をチャート要素に合わせるには
0 ユーザーが評価
この投稿には確認済みの回答があります。 0 返信 | 1 サポーター
投稿
26
返信
[IG] 池原 大然
投稿済み: 2009/10/2 16:18
0 ユーザーが評価
【概要】
積層型柱状チャートを使用した場合、チャート要素の表示順と凡例の表示順が異なります。これはチャート要素が下から上に向かって描画されることが原因です。この問題を解決するためには反対順に凡例を表示させるロジックを実装する必要があります。
【該当するコンポーネント】
UltraWinChart
【該当するバージョン】
全てのバージョン
【記事の種類】
How-to
【詳細】
1. 新しいアプリケーションを作成し、チャートをフォームに追加します。
2. チャートにバインドするデータを作成します。
3. チャートタイプをStackColumnChart と設定し、ColorModel.Skin に表示色の追加を行います。
4. ChartDrawItem イベントにて通常とは逆の表示色の順序を設定します。
In VB.NET:
Private
Sub
UltraChart1_ChartDrawItem(
ByVal
sender
As
Object
,
ByVal
e
As
Infragistics.UltraChart.Shared.Events.ChartDrawItemEventArgs)
Handles
UltraChart1.ChartDrawItem
' Box
プリミティブが描画されるかを判定します。
If
(
TypeOf
e.Primitive
Is
Infragistics.UltraChart.Core.Primitives.Box)
Then
'Box
プリミティブがデータを保持しているか確認します。
If
e.HasData
Then
e.Primitive.PE.FillGradientStyle = GradientStyle.None
'
凡例がどうかを判定し、表示色を決定します。
If
(e.Primitive.Path =
"Border.Title.Legend"
)
Then
e.Primitive.PE.FillGradientStyle = GradientStyle.None
e.Primitive.PE.Fill =
Me
.colors(System.Math.Abs(_numericColumns - 1 - e.Primitive.Column))
End
If
End
If
End
If
End
Sub
In C#:
private
void
ultraChart1_ChartDrawItem(
object
sender, Infragistics.UltraChart.Shared.Events.ChartDrawItemEventArgs e)
{
// Box
プリミティブが描画されるかを判定します。
if
(e.Primitive
is
Infragistics.UltraChart.Core.Primitives.Box)
{
//
Box プリミティブがデータを保持しているか確認します。
if
(e.HasData)
{
e.Primitive.PE.FillGradientStyle = Infragistics.UltraChart.Shared.Styles.GradientStyle.None;
//
凡例がどうかを判定し、表示色を決定します。
if
(e.Primitive.Path ==
"Border.Title.Legend"
)
{
e.Primitive.PE.FillGradientStyle = Infragistics.UltraChart.Shared.Styles.GradientStyle.None;
e.Primitive.PE.Fill =
this
.colors[System.
Math
.Abs(numericColumns-1 - e.Primitive.Column)];
}
}
}
}
5. IRenderLabel インターフェィスを実装します
In VB.NET:
Public Class
labels
Implements
IRenderLabel
Private
_dt
As
DataTable
Private
_columns
As
Integer
Public
Sub
New
(
ByVal
dt
As
DataTable)
_dt = dt
End
Sub
Public
Overloads
Function
ToString(
ByVal
Context
As
System.Collections.Hashtable)
As
String
Implements
Infragistics.UltraChart.Resources.IRenderLabel.ToString
' Column
インデックスを基にラベル文字列を設定します。
Dim
ColumnIndex
As
Int16 = System.Math.Abs(_dt.Columns.Count - 1 -
CType
(Context(
"DATA_COLUMN"
),
Integer
))
Return
_dt.Columns(ColumnIndex).ColumnName
End
Function
End
Class
In C#:
public
class
labels
: IRenderLabel
{
private
DataTable
_dt;
public
labels(
DataTable
dt)
{
_dt = dt;
}
#region
IRenderLabel Members
public
string
ToString(System.Collections.
Hashtable
Context)
{
//
Column インデックスを基にラベル文字列を設定します。
return
_dt.Columns[
Math
.Abs(_dt.Columns.Count-1 - (
int
)Context[
"DATA_COLUMN"
])].ColumnName;
}
#endregion
}
6. 数値列の個数を判定するメソッドを実装します。
7.
チャートにデータをバインドし、カスタムラベルを設定します。
以下に保存:
UltraWinChart
,
KB
前へ
|
次へ
ページ 1 / 1 (1 項目) |
RSS
インフラジスティックス ジャパン