public override void RenderBefore(RenderContext context)
{
IPaletteRibbonBack paletteBorder;
IPaletteRibbonBack paletteBack;
// Are we a group inside a context tab?
if ((_ribbon.SelectedTab != null) && !string.IsNullOrEmpty(_ribbon.SelectedTab.ContextName))
ElementState = _viewGroup.Pressed ? PaletteState.Pressed : _viewGroup.Tracking ? PaletteState.ContextTracking : PaletteState.ContextNormal;
else
ElementState = _viewGroup.Pressed ? PaletteState.Pressed : _viewGroup.Tracking ? PaletteState.Tracking : PaletteState.Normal;
// Decide on the palette to use
switch (State)
{
case PaletteState.Pressed:
paletteBorder = _ribbon.StatePressed.RibbonGroupCollapsedFrameBorder;
paletteBack = _ribbon.StatePressed.RibbonGroupCollapsedFrameBack;
break;
case PaletteState.ContextNormal:
paletteBorder = _ribbon.StateContextNormal.RibbonGroupCollapsedFrameBorder;
paletteBack = _ribbon.StateContextNormal.RibbonGroupCollapsedFrameBack;
break;
case PaletteState.ContextTracking:
paletteBorder = _ribbon.StateContextTracking.RibbonGroupCollapsedFrameBorder;
paletteBack = _ribbon.StateContextTracking.RibbonGroupCollapsedFrameBack;
break;
case PaletteState.Tracking:
paletteBorder = _ribbon.StateTracking.RibbonGroupCollapsedFrameBorder;
paletteBack = _ribbon.StateTracking.RibbonGroupCollapsedFrameBack;
break;
case PaletteState.Normal:
default:
paletteBorder = _ribbon.StateNormal.RibbonGroupCollapsedFrameBorder;
paletteBack = _ribbon.StateNormal.RibbonGroupCollapsedFrameBack;
break;
}
// The background is slightly inside the rounded border
Rectangle backRect = ClientRectangle;
backRect.Inflate(-1, -1);
// Draw the background for the group image area
_memento1 = context.Renderer.RenderRibbon.DrawRibbonBack(_ribbon.RibbonShape, context, backRect, State, paletteBack, VisualOrientation.Top, false, _memento1);
// Draw the border around the group image area
_memento2 = context.Renderer.RenderRibbon.DrawRibbonBack(_ribbon.RibbonShape, context, ClientRectangle, State, paletteBorder, VisualOrientation.Top, false, _memento2);
// If we have an image for drawing
if (_ribbonGroup.Image != null)
{
// Determine the rectangle for the fixed size of image drawing
Rectangle drawRect = new Rectangle(new Point(ClientLocation.X + _imageOffsetX,
ClientLocation.Y + _offsetY),
_imageSize);
context.Graphics.DrawImage(_ribbonGroup.Image, drawRect);
}
}