UltraDoughnutChart でクリックした要素をハイライトし、かつ、それ以外の要素をローライトしたい場合は、
- RingSeries で選択された要素用の色を設定する。
- ローライト用の配色セットを用意する。
- デフォルトの配色セットを保存しておく。
- クリックされたタイミングで色の切り替えをする。
で可能です。
1. RingSeries で選択された要素用の色を設定する。
RingSeries の SelectedStyle プロパティでクリックして選択された要素の色を指定します。
var ringSeries = new RingSeries()
{
...
// 項目選択時の色の設定
SelectedStyle = new Style()
{
Fill = Color.OrangeRed
}
};
2. ローライト用の配色セットを用意する。
SelectedStyleが反映されるのは選択された項目のみですので、それ以外を灰色などにローライトしたい場合は、ローライト用の配色セットを用意する必要があります。
private BrushCollection _lowlightSliceBrushes = new BrushCollection() { Color.LightGray };
3. デフォルトの配色セットを保存しておく。
元の配色に戻したいときに使います。
private BrushCollection _defaultSliceBrushes = new BrushCollection();
... (省略) ...
foreach (var brush in ringSeries.Brushes)
{
this._defaultSliceBrushes.Add(brush);
}
4. クリックされたタイミングで色の切り替えをする
クリックされたタイミングで、UltraDoughnutChart の SliceClick イベントが発生します。
このイベントハンドラーで項目が選択されたらローライトの配色セットを設定し、非選択されたらデフォルトの配色セットを設定します。
配色セットを設定する場所は RingSeries の Brushes プロパティです。
private void UltraDoughnutChart1_SliceClick(object sender, DoughnutSliceClickEventArgs e)
{
var dataVisualizationArgs = e as Infragistics.Win.DataVisualization.SliceClickEventArgs;
if (dataVisualizationArgs == null) return;
if (dataVisualizationArgs.IsSelected)
{
e.Series.Brushes = this._lowlightSliceBrushes;
}
else
{
e.Series.Brushes = this._defaultSliceBrushes;
}
}
実行結果
