182 lines
8.1 KiB
C#
182 lines
8.1 KiB
C#
using System;
|
|
using System.Drawing;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
/// <summary>
|
|
/// Summary description for ButtonItemPainter.
|
|
/// </summary>
|
|
internal abstract class ButtonItemPainter
|
|
{
|
|
public abstract void PaintButton(ButtonItem button, ItemPaintArgs pa);
|
|
public abstract void PaintButtonBackground(ButtonItem button, ItemPaintArgs pa, CompositeImage image);
|
|
public abstract void PaintButtonCheck(ButtonItem button, ItemPaintArgs pa, CompositeImage image, Rectangle r);
|
|
public abstract void PaintButtonImage(ButtonItem button, ItemPaintArgs pa, CompositeImage image, Rectangle imagebounds);
|
|
public abstract void PaintButtonMouseOver(ButtonItem button, ItemPaintArgs pa, CompositeImage image, Rectangle r);
|
|
public abstract void PaintButtonText(ButtonItem button, ItemPaintArgs pa, Color textColor, CompositeImage image);
|
|
public abstract void PaintCustomizeCheck(ButtonItem button, ItemPaintArgs pa, Rectangle r);
|
|
public abstract void PaintExpandButton(ButtonItem button, ItemPaintArgs pa);
|
|
|
|
public abstract Rectangle GetCheckRectangle(ButtonItem button, ItemPaintArgs pa, CompositeImage image);
|
|
public abstract Rectangle GetCustomizeMenuCheckRectangle(ButtonItem button, ItemPaintArgs pa);
|
|
public abstract Rectangle GetImageRectangle(ButtonItem button, ItemPaintArgs pa, CompositeImage image);
|
|
public abstract Rectangle GetMouseOverRectangle(ButtonItem button, ItemPaintArgs pa, CompositeImage image);
|
|
|
|
public abstract eTextFormat GetStringFormat(ButtonItem button, ItemPaintArgs pa, CompositeImage image);
|
|
|
|
public static string GetDrawText(string text)
|
|
{
|
|
return text; //.Replace(@"\n",Environment.NewLine);
|
|
}
|
|
|
|
public static bool IsItemEnabled(BaseItem item, ItemPaintArgs pa)
|
|
{
|
|
return item.GetEnabled(pa.ContainerControl);
|
|
}
|
|
|
|
public static Point[] GetExpandPolygon(Rectangle r, ePopupSide direction)
|
|
{
|
|
Point[] p = new Point[3];
|
|
Size defaultSize = new Size(Dpi.Width4, Dpi.Height3);
|
|
switch (direction)
|
|
{
|
|
case ePopupSide.Right:
|
|
{
|
|
p[0].X = r.Left + 1;
|
|
p[0].Y = r.Top + (r.Height - defaultSize.Height) / 2 - 1;
|
|
p[1].X = p[0].X;
|
|
p[1].Y = p[0].Y + Dpi.Height6;
|
|
p[2].X = p[0].X + Dpi.Width3;
|
|
p[2].Y = p[0].Y + Dpi.Width3;
|
|
break;
|
|
}
|
|
case ePopupSide.Left:
|
|
{
|
|
p[0].X = r.Left + Dpi.Width3;
|
|
p[0].Y = r.Top + (r.Height - defaultSize.Height) / 2 - 1;
|
|
p[1].X = p[0].X;
|
|
p[1].Y = p[0].Y + Dpi.Height6;
|
|
p[2].X = p[0].X - Dpi.Width3;
|
|
p[2].Y = p[0].Y + Dpi.Height3;
|
|
break;
|
|
}
|
|
case ePopupSide.Top:
|
|
{
|
|
p[0].X = r.Left + (r.Width - defaultSize.Width) / 2;
|
|
p[0].Y = r.Top + (r.Height - defaultSize.Height) / 2 + defaultSize.Height;
|
|
p[1].X = p[0].X + Dpi.Width5;
|
|
p[1].Y = p[0].Y+1;
|
|
p[2].X = p[0].X + Dpi.Width2;
|
|
p[2].Y = p[0].Y - Dpi.Height3;
|
|
//p[0].X = r.Left + (r.Width - defaultSize.Width) / 2 - Dpi.Width1;
|
|
//p[0].Y = r.Top + (r.Height - defaultSize.Height) / 2 + defaultSize.Height;
|
|
//p[1].X = p[0].X + Dpi.Width6;
|
|
//p[1].Y = p[0].Y;
|
|
//p[2].X = p[0].X + Dpi.Width3;
|
|
//p[2].Y = p[0].Y - Dpi.Height4;
|
|
break;
|
|
}
|
|
case ePopupSide.Bottom:
|
|
case ePopupSide.Default:
|
|
{
|
|
p[0].X = r.Left + (r.Width - defaultSize.Width) / 2;
|
|
p[0].Y = r.Top + (r.Height - defaultSize.Height) / 2 + 1;
|
|
p[1].X = p[0].X + Dpi.Width5;
|
|
p[1].Y = p[0].Y;
|
|
p[2].X = p[0].X + Dpi.Width2;
|
|
p[2].Y = p[0].Y + Dpi.Height3;
|
|
break;
|
|
}
|
|
}
|
|
return p;
|
|
}
|
|
|
|
public static void PaintButtonExpandIndicator(ButtonItem button, ItemPaintArgs pa)
|
|
{
|
|
Graphics g = pa.Graphics;
|
|
Rectangle itemRect = button.DisplayRectangle;
|
|
Point[] p = new Point[3];
|
|
Rectangle r = button.SubItemsRect;
|
|
|
|
if (button.PopupSide == ePopupSide.Default)
|
|
{
|
|
if (button.Orientation == eOrientation.Horizontal)
|
|
{
|
|
p[0].X = itemRect.Left + r.Left + (r.Width - Dpi.Width5) / 2;
|
|
p[0].Y = itemRect.Top + r.Top + (r.Height - Dpi.Height3) / 2 + 1;
|
|
p[1].X = p[0].X + Dpi.Width5;
|
|
p[1].Y = p[0].Y;
|
|
p[2].X = p[0].X + Dpi.Width2;
|
|
p[2].Y = p[0].Y + Dpi.Height3;
|
|
}
|
|
else
|
|
{
|
|
p[0].X = itemRect.Left + r.Left + r.Width / 2;
|
|
p[0].Y = itemRect.Top + r.Top + r.Height / 2 - Dpi.Height3;
|
|
p[1].X = p[0].X;
|
|
p[1].Y = p[0].Y + Dpi.Height6;
|
|
p[2].X = p[0].X + Dpi.Width3;
|
|
p[2].Y = p[0].Y + Dpi.Height3;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (button.PopupSide)
|
|
{
|
|
case ePopupSide.Right:
|
|
{
|
|
p[0].X = itemRect.Left + r.Left + r.Width / 2;
|
|
p[0].Y = itemRect.Top + r.Top + r.Height / 2 - Dpi.Height3;
|
|
p[1].X = p[0].X;
|
|
p[1].Y = p[0].Y + Dpi.Height6;
|
|
p[2].X = p[0].X + Dpi.Width3;
|
|
p[2].Y = p[0].Y + Dpi.Height3;
|
|
break;
|
|
}
|
|
case ePopupSide.Left:
|
|
{
|
|
p[0].X = itemRect.Left + r.Left + r.Width / 2 + Dpi.Width3;
|
|
p[0].Y = itemRect.Top + r.Top + r.Height / 2 - Dpi.Height3;
|
|
p[1].X = p[0].X;
|
|
p[1].Y = p[0].Y + Dpi.Height6;
|
|
p[2].X = p[0].X - Dpi.Width3;
|
|
p[2].Y = p[0].Y + Dpi.Height3;
|
|
break;
|
|
}
|
|
case ePopupSide.Top:
|
|
{
|
|
p[0].X = itemRect.Left + r.Left + (r.Width - Dpi.Width5) / 2;
|
|
p[0].Y = itemRect.Top + r.Top + (r.Height - Dpi.Height3) / 2 + Dpi.Height4;
|
|
p[1].X = p[0].X + Dpi.Width6;
|
|
p[1].Y = p[0].Y;
|
|
p[2].X = p[0].X + Dpi.Width3;
|
|
p[2].Y = p[0].Y - Dpi.Height4;
|
|
break;
|
|
}
|
|
case ePopupSide.Bottom:
|
|
{
|
|
p[0].X = itemRect.Left + r.Left + (r.Width - Dpi.Width5) / 2 + 1;
|
|
p[0].Y = itemRect.Top + r.Top + (r.Height - Dpi.Height3) / 2 + 1;
|
|
p[1].X = p[0].X + Dpi.Width5;
|
|
p[1].Y = p[0].Y;
|
|
p[2].X = p[0].X + Dpi.Width2;
|
|
p[2].Y = p[0].Y + Dpi.Height3;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (IsItemEnabled(button, pa))
|
|
{
|
|
using (SolidBrush mybrush = new SolidBrush(pa.Colors.ItemText))
|
|
g.FillPolygon(mybrush, p);
|
|
}
|
|
else
|
|
{
|
|
using (SolidBrush mybrush = new SolidBrush(pa.Colors.ItemDisabledText))
|
|
g.FillPolygon(mybrush, p);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|