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);
 | |
|             }
 | |
|         }
 | |
| 
 | |
| 	}
 | |
| }
 |