To implement a custom colorizer, design a class implementing the ITreeMapColorizer interface and implement the interface ITreeMapColorizer.GetItemColor method. After that, an instance of the class can be assigned to the TreeMapControl.Colorizer property.
CustomColorizer.cs |
using DevExpress.TreeMap;
using DevExpress.XtraTreeMap;
using System;
using System.Drawing;
namespace CustomColorizerSample {
class CustomColorizer : ITreeMapColorizer {
Palette palette = Palette.Office2016Palette;
public Palette Palette {
get { return palette; }
set {
if(palette.Equals(value)) return;
palette = value;
RaiseColorizerChanged();
}
}
public event ColorizerChangedEventHandler ColorizerChanged;
public Color GetItemColor(ITreeMapItem item, TreeMapItemGroupInfo group) {
if(item.Children.Count == 0) {
Color itemColor = Palette[group.ItemIndex % Palette.Count];
double itemWeight = (item.Value - group.MinValue) / (group.MaxValue - group.MinValue);
if(Double.IsNaN(itemWeight)) itemWeight = 1;
return Color.FromArgb(
(int)(itemWeight * 255),
itemColor.R,
itemColor.G,
itemColor.B
);
}
else
return Palette[Palette.Count - 1 - (group.GroupIndex + group.GroupLevel + group.ItemIndex) % Palette.Count];
}
void RaiseColorizerChanged() {
if(ColorizerChanged == null) return;
ColorizerChanged.Invoke(this, new ColorizerChangedEventArgs());
}
}
}
|
Form1.cs |
void ConfigureTreeMapColorizer() {
var colorizer = new CustomColorizer { Palette = Palette.Office2013Palette };
treeMap.Colorizer = colorizer;
}
|
Form1.vb |
Private Sub ConfigureTreeMapColorizer()
Dim colorizer = New CustomColorizer With {.Palette = Palette.Office2013Palette}
treeMap.Colorizer = colorizer
End Sub
|
CustomColorizer.vb |
Imports DevExpress.TreeMap
Imports DevExpress.XtraTreeMap
Imports System
Imports System.Drawing
Namespace CustomColorizerSample
Friend Class CustomColorizer
Implements ITreeMapColorizer
Private palette_Renamed As Palette = Palette.Office2016Palette
Public Property Palette() As Palette
Get
Return palette_Renamed
End Get
Set(ByVal value As Palette)
If palette_Renamed.Equals(value) Then
Return
End If
palette_Renamed = value
RaiseColorizerChanged()
End Set
End Property
Public Event ColorizerChanged As ColorizerChangedEventHandler Implements ITreeMapColorizer.ColorizerChanged
Public Function GetItemColor(ByVal item As ITreeMapItem, ByVal group As TreeMapItemGroupInfo) As Color Implements ITreeMapColorizer.GetItemColor
If item.Children.Count = 0 Then
Dim itemColor As Color = Palette(group.ItemIndex Mod Palette.Count)
Dim itemWeight As Double = (item.Value - group.MinValue) / (group.MaxValue - group.MinValue)
If Double.IsNaN(itemWeight) Then
itemWeight = 1
End If
Return Color.FromArgb(CInt((itemWeight * 255)), itemColor.R, itemColor.G, itemColor.B)
Else
Return Palette(Palette.Count - 1 - (group.GroupIndex + group.GroupLevel + group.ItemIndex) Mod Palette.Count)
End If
End Function
Private Sub RaiseColorizerChanged()
If ColorizerChangedEvent Is Nothing Then
Return
End If
ColorizerChangedEvent.Invoke(Me, New ColorizerChangedEventArgs())
End Sub
End Class
End Namespace
|