GrapeCity MultiRow Windows Forms Documentation
PaintBackground Method
Example 


A System.Drawing.Rectangle that represents the area of the cell that needs to be repainted.
Paints the cell's background for the specified area.
Syntax
Public Sub PaintBackground( _
   ByVal clipBounds As Rectangle _
) 
Dim instance As CellPaintingEventArgs
Dim clipBounds As Rectangle
 
instance.PaintBackground(clipBounds)
public void PaintBackground( 
   Rectangle clipBounds
)

Parameters

clipBounds
A System.Drawing.Rectangle that represents the area of the cell that needs to be repainted.
Example
The following code example shows how to customize a cell's paint logic. This code example is part of a larger example provided for the GcMultiRow.CellPainting event.
void gcMultiRow_CellPainting(object sender, CellPaintingEventArgs e)
        {
            if (e.CellIndex == 1 && e.Scope == CellScope.Row)
            {
                e.PaintBackground(e.ClipBounds);

                PaintRateBlock(e);

                e.PaintForeground(e.ClipBounds);

                e.PaintBorder(e.ClipBounds);

                // If you customize the paint logic, make sure the Handled property is set to true.
                e.Handled = true;
            }
        }
        private static void PaintRateBlock(CellPaintingEventArgs e)
        {
            Color color1 = Color.Red;
            Color color2 = Color.Orange;
            if (e.Selected)
            {
                color1 = Color.Blue;
                color2 = Color.SkyBlue;
            }

            decimal rate = 0m;

            if (e.Value != null)
            {
                rate = (decimal)(e.Value) / 100m;
            }

            // Calculate block size.
            int spinButtonWidth = 17;
            int blockWidth = (int)((e.ClipBounds.Width - spinButtonWidth) * rate);

            if (blockWidth > 0)
            {
                Rectangle rect = e.CellBounds;

                rect.Width = blockWidth;

                LinearGradientBrush brush = new LinearGradientBrush(rect, color1, color2, LinearGradientMode.Vertical);

                e.Graphics.FillRectangle(brush, rect);
            }
        }
Private Sub gcMultiRow_CellPainting(ByVal sender As Object, ByVal e As CellPaintingEventArgs) Handles gcMultiRow.CellPainting
        If e.CellIndex = 1 AndAlso e.Scope = CellScope.Row Then
            e.PaintBackground(e.ClipBounds)

            PaintRateBlock(e)

            e.PaintForeground(e.ClipBounds)

            e.PaintBorder(e.ClipBounds)

            ' If you customize the paint logic, make sure the Handled property is set to true.
            e.Handled = True
        End If
    End Sub
    Private Shared Sub PaintRateBlock(ByVal e As CellPaintingEventArgs)
        Dim color1 As Color = Color.Red
        Dim color2 As Color = Color.Orange
        If e.Selected Then
            color1 = Color.Blue
            color2 = Color.SkyBlue
        End If

        Dim rate As Decimal = 0D

        If e.Value <> Nothing Then
            rate = DirectCast((e.Value), Decimal) / 100D
        End If

        ' Calculate block size.
        Dim spinButtonWidth As Integer = 17
        Dim blockWidth As Integer = CInt((e.ClipBounds.Width - spinButtonWidth) * rate)

        If blockWidth > 0 Then
            Dim rect As Rectangle = e.CellBounds

            rect.Width = blockWidth

            Dim brush As New LinearGradientBrush(rect, color1, color2, LinearGradientMode.Vertical)

            e.Graphics.FillRectangle(brush, rect)
        End If
    End Sub
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

CellPaintingEventArgs Class
CellPaintingEventArgs Members

 

 


Copyright © GrapeCity, inc. All rights reserved.