A newer version of this page is available. Switch to the current version.

Custom Draw

  • 3 minutes to read

The Custom Painting technology lets you customize appearances of individual elements to any extent you like. It offers you a set of events that can be handled to paint desired elements manually.

Example: How to Paint Cells in a Custom Manner

The following example shows how to custom paint cells (normal, focused, selected and Grand Total cells) within the Pivot Grid Control’s Data Area. For this purpose the PivotGridControl.CustomDrawCell event is handled. The event parameter’s properties allow the processed cell to be identified.

The image below shows the result.


using System.Drawing.Drawing2D;
using DevExpress.XtraPivotGrid;
// ...

private void pivotGridControl1_CustomDrawCell(object sender, PivotCustomDrawCellEventArgs e) {
    Rectangle r;

    // Paints Row Grand Totals.
    if(e.RowValueType == PivotGridValueType.GrandTotal) {
        e.GraphicsCache.FillRectangle(new LinearGradientBrush(e.Bounds, Color.LightBlue,
            Color.Blue, LinearGradientMode.Vertical), e.Bounds);
        r = Rectangle.Inflate(e.Bounds, -3, -3);
        e.GraphicsCache.FillRectangle(new LinearGradientBrush(e.Bounds, Color.Blue,
            Color.LightSkyBlue, LinearGradientMode.Vertical), r);
        e.GraphicsCache.DrawString(e.DisplayText, e.Appearance.Font, 
            new SolidBrush(Color.White), r, e.Appearance.GetStringFormat());
        e.Handled = true;

    // Paints the data cells.
    Brush backBrush;
    r = e.Bounds;

            if (e.Focused)
                // Initializes the brush used to paint the focused cell.
                backBrush = e.GraphicsCache.GetSolidBrush(Color.Pink);
                if (e.Selected)
                    // Initializes the brush used to paint selected cells.
                    backBrush = e.GraphicsCache.GetSolidBrush(Color.PaleGreen);
                    // Initializes the brush used to paint data cells.
                    backBrush = e.GraphicsCache.GetSolidBrush(Color.LemonChiffon);

            e.GraphicsCache.DrawRectangle(new Pen(new SolidBrush(Color.DimGray), 1), r);
            r.Inflate(-1, -1);
            e.GraphicsCache.FillRectangle(backBrush, r);
            e.Appearance.DrawString(e.GraphicsCache, e.DisplayText, r);

    e.Handled = true;
See Also