Back to Devexpress

TreeMapItemGroupInfo Struct

windowsforms-devexpress-dot-xtratreemap-b0c520db.md

latest6.1 KB
Original Source

TreeMapItemGroupInfo Struct

This class stores information about a tree map item group.

Namespace : DevExpress.XtraTreeMap

Assembly : DevExpress.XtraTreeMap.v25.2.dll

NuGet Package : DevExpress.TreeMap

Declaration

csharp
public struct TreeMapItemGroupInfo :
    IItemGroupInfo
vb
Public Structure TreeMapItemGroupInfo
    Implements IItemGroupInfo

Remarks

This class provides information about a tree map group to the ITreeMapColorizer.GetItemColor method. This information contains a group’s nested level (TreeMapItemGroupInfo.GroupLevel), group index in the level (TreeMapItemGroupInfo.GroupIndex), minimum and maximum values in the group (TreeMapItemGroupInfo.MinValue and TreeMapItemGroupInfo.MaxValue), and current item index in the group (TreeMapItemGroupInfo.ItemIndex).

Example

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.

csharp
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());
        }
    }
}
csharp
void ConfigureTreeMapColorizer() {
    var colorizer = new CustomColorizer { Palette = Palette.Office2013Palette };
    treeMap.Colorizer = colorizer;
}
vb
Private Sub ConfigureTreeMapColorizer()
    Dim colorizer = New CustomColorizer With {.Palette = Palette.Office2013Palette}
    treeMap.Colorizer = colorizer
End Sub
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

See Also

TreeMapItemGroupInfo Members

DevExpress.XtraTreeMap Namespace