Back to Devexpress

TreeMapItemGroupInfo.ItemIndex Property

windowsforms-devexpress-dot-xtratreemap-dot-treemapitemgroupinfo-1ef380ba.md

latest5.5 KB
Original Source

TreeMapItemGroupInfo.ItemIndex Property

Returns the index of an item in the source collection of the group.

Namespace : DevExpress.XtraTreeMap

Assembly : DevExpress.XtraTreeMap.v25.2.dll

NuGet Package : DevExpress.TreeMap

Declaration

csharp
public int ItemIndex { get; }
vb
Public ReadOnly Property ItemIndex As Integer

Property Value

TypeDescription
Int32

A Int32 value specifying the index of an item.

|

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 Struct

TreeMapItemGroupInfo Members

DevExpress.XtraTreeMap Namespace