Creates a new RebarMenuRenderer object which renders menus using the current theme.
A RebarMenuRenderer object which renders menu windows using the current theme.
Since menu windows cannot be owner-drawn (only menu items can), it is usually not necessary to ever call this method from your code.
If you create a custom theme, override this method and return a new instance of your custom implementation of RebarMenuRenderer.
This example includes the two event handlers required to owner-draw a menu item. Assume that there is a themed Rebar control on the same form called rebar1.
/// <summary>
/// Handles the MeasureItem event for a menu item.
/// </summary>
private void menuItem1_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
{
// obtain the menu renderer used by the rebar control
RebarMenuItemRenderer rend = rebar1.Theme.CreateMenuItemRenderer(sender as MenuItem, e);
// set our custom text
rend.Text = "Custom long text";
// measure the size of the item
Size sz = rend.MeasureItem();
e.ItemHeight = sz.Height;
e.ItemWidth = sz.Width;
}
/// <summary>
/// Handles the DrawItem event for a menu item.
/// </summary>
private void menuItem1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
// obtain the menu renderer used by the rebar control
RebarMenuItemRenderer rend = rebar1.Theme.CreateMenuItemRenderer(sender as MenuItem, e);
// invoke the standard background, image and arrow drawing methods
rend.DrawBackground(e.Graphics);
rend.DrawImage(e.Graphics);
rend.DrawArrow(e.Graphics);
// draw our custom text
ControlRenderer.DrawText(e.Graphics, "Custom long text", rend.Font, rend.ForeColor, rend.GetTextBounds(),
rend.GetTextRenderFlags());
// draw the shortcut text
ControlRenderer.DrawText(e.Graphics, rend.ShortcutText, rend.Font, rend.ForeColor, rend.GetTextBounds(),
rend.GetTextRenderFlags() | TextRenderFlags.AlignFar);
}
RebarTheme Class | Skybound.Rebar.Rendering Namespace