// Authors:
// Jonathan Pobst (monkey@jpobst.com)
//
-#if NET_2_0
using System;
+using System.ComponentModel;
using System.Drawing;
using System.Drawing.Imaging;
+using System.Drawing.Drawing2D;
namespace System.Windows.Forms
{
public abstract class ToolStripRenderer
{
private static ColorMatrix grayscale_matrix = new ColorMatrix (new float[][] {
- new float[]{0.3f,0.3f,0.3f,0,0},
- new float[]{0.59f,0.59f,0.59f,0,0},
- new float[]{0.11f,0.11f,0.11f,0,0},
- new float[]{0,0,0,1,0,0},
- new float[]{0,0,0,0,1,0},
- new float[]{0,0,0,0,0,1}
+ new float[] {0.22f, 0.22f, 0.22f, 0, 0},
+ new float[] {0.27f, 0.27f, 0.27f, 0, 0},
+ new float[] {0.04f, 0.04f, 0.04f, 0, 0},
+ new float[] {0.365f, 0.365f, 0.365f, 0.7f, 0},
+ new float[] {0, 0, 0, 0, 1}
});
protected ToolStripRenderer ()
#region Public Methods
public static Image CreateDisabledImage(Image normalImage)
{
+ if (normalImage == null)
+ return null;
+
// Code adapted from ThemeWin32Classic.cs
ImageAttributes ia = new ImageAttributes();
ia.SetColorMatrix (grayscale_matrix);
- Bitmap b = new Bitmap(normalImage);
- Graphics.FromImage(b).DrawImage(normalImage, new Rectangle (0, 0, normalImage.Width, normalImage.Height), 0, 0, normalImage.Width, normalImage.Height, GraphicsUnit.Pixel, ia);
+ Bitmap b = new Bitmap(normalImage.Width, normalImage.Height);
+ using (Graphics g = Graphics.FromImage(b))
+ g.DrawImage(normalImage, new Rectangle (0, 0, normalImage.Width, normalImage.Height), 0, 0, normalImage.Width, normalImage.Height, GraphicsUnit.Pixel, ia);
return b;
}
-
+
public void DrawArrow (ToolStripArrowRenderEventArgs e)
{ this.OnRenderArrow (e); }
protected internal virtual void InitializePanel (ToolStripPanel toolStripPanel) {}
protected virtual void OnRenderArrow (ToolStripArrowRenderEventArgs e)
- { if (RenderArrow != null) RenderArrow (this, e); }
+ {
+ switch (e.Direction) {
+ case ArrowDirection.Down:
+ using (Pen p = new Pen (e.ArrowColor)) {
+ int x = e.ArrowRectangle.Left + (e.ArrowRectangle.Width / 2) - 3;
+ int y = e.ArrowRectangle.Top + (e.ArrowRectangle.Height / 2) - 2;
+
+ DrawDownArrow (e.Graphics, p, x, y);
+ }
+ break;
+ case ArrowDirection.Left:
+ break;
+ case ArrowDirection.Right:
+ using (Pen p = new Pen (e.ArrowColor)) {
+ int x = e.ArrowRectangle.Left + (e.ArrowRectangle.Width / 2) - 3;
+ int y = e.ArrowRectangle.Top + (e.ArrowRectangle.Height / 2) - 4;
+
+ DrawRightArrow (e.Graphics, p, x, y);
+ }
+ break;
+ case ArrowDirection.Up:
+ break;
+ }
+
+ ToolStripArrowRenderEventHandler eh = (ToolStripArrowRenderEventHandler)Events[RenderArrowEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderButtonBackground (ToolStripItemRenderEventArgs e)
- { if (RenderButtonBackground != null) RenderButtonBackground (this, e); }
+ {
+ ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderButtonBackgroundEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderDropDownButtonBackground (ToolStripItemRenderEventArgs e)
- { if (RenderDropDownButtonBackground != null) RenderDropDownButtonBackground (this, e); }
+ {
+ ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderDropDownButtonBackgroundEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderGrip (ToolStripGripRenderEventArgs e)
- { if (RenderGrip != null) RenderGrip (this, e); }
+ {
+ ToolStripGripRenderEventHandler eh = (ToolStripGripRenderEventHandler)Events [RenderGripEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderImageMargin (ToolStripRenderEventArgs e)
- { if (RenderImageMargin != null) RenderImageMargin (this, e); }
+ {
+ ToolStripRenderEventHandler eh = (ToolStripRenderEventHandler)Events [RenderImageMarginEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderItemBackground (ToolStripItemRenderEventArgs e)
- { if (RenderItemBackground != null) RenderItemBackground (this, e); }
+ {
+ if (e.Item.BackColor != Control.DefaultBackColor) {
+ // Only paint the BackColor if it's not the default one,
+ // to avoid painting a solid background color over the parent ToolStrip gradient.
+ Rectangle item_bounds = new Rectangle (0, 0, e.Item.Width, e.Item.Height);
+ e.Graphics.FillRectangle (ThemeEngine.Current.ResPool.GetSolidBrush (e.Item.BackColor), item_bounds);
+ }
+
+ if (e.Item.BackgroundImage != null) {
+ Rectangle item_bounds = new Rectangle (0, 0, e.Item.Width, e.Item.Height);
+ DrawBackground (e.Graphics, item_bounds, e.Item.BackgroundImage, e.Item.BackgroundImageLayout);
+ }
+
+ ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderItemBackgroundEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderItemCheck (ToolStripItemImageRenderEventArgs e)
- { if (RenderItemCheck != null) RenderItemCheck (this, e); }
+ {
+ ToolStripItemImageRenderEventHandler eh = (ToolStripItemImageRenderEventHandler)Events [RenderItemCheckEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderItemImage (ToolStripItemImageRenderEventArgs e)
- { if (RenderItemImage != null) RenderItemImage (this, e); }
+ {
+ bool need_dispose = false;
+ Image i = e.Image;
+
+ if (e.Item.RightToLeft == RightToLeft.Yes && e.Item.RightToLeftAutoMirrorImage == true) {
+ i = CreateMirrorImage (i);
+ need_dispose = true;
+ }
+
+ if (e.Item.ImageTransparentColor != Color.Empty) {
+ ImageAttributes ia = new ImageAttributes ();
+ ia.SetColorKey (e.Item.ImageTransparentColor, e.Item.ImageTransparentColor);
+ e.Graphics.DrawImage (i, e.ImageRectangle, 0, 0, i.Width, i.Height, GraphicsUnit.Pixel, ia);
+ ia.Dispose ();
+ }
+ else
+ e.Graphics.DrawImage (i, e.ImageRectangle);
+
+ if (need_dispose)
+ i.Dispose ();
+
+ ToolStripItemImageRenderEventHandler eh = (ToolStripItemImageRenderEventHandler)Events [RenderItemImageEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderItemText (ToolStripItemTextRenderEventArgs e)
- { if (RenderItemText != null) RenderItemText (this, e); }
+ {
+ if (e.TextDirection == ToolStripTextDirection.Vertical90) {
+ GraphicsState gs = e.Graphics.Save ();
+ PointF p = new PointF (e.Graphics.Transform.OffsetX, e.Graphics.Transform.OffsetY);
+
+ e.Graphics.ResetTransform ();
+ e.Graphics.RotateTransform (90);
+
+ RectangleF r = new RectangleF ((e.Item.Height - e.TextRectangle.Height) / 2, (e.TextRectangle.Width + p.X) * -1 - 18, e.TextRectangle.Height, e.TextRectangle.Width);
+
+ StringFormat sf = new StringFormat ();
+ sf.Alignment = StringAlignment.Center;
+
+ e.Graphics.DrawString (e.Text, e.TextFont, ThemeEngine.Current.ResPool.GetSolidBrush (e.TextColor), r, sf);
+
+ e.Graphics.Restore (gs);
+ } else if (e.TextDirection == ToolStripTextDirection.Vertical270) {
+ GraphicsState gs = e.Graphics.Save ();
+ PointF p = new PointF (e.Graphics.Transform.OffsetX, e.Graphics.Transform.OffsetY);
+
+ e.Graphics.ResetTransform ();
+ e.Graphics.RotateTransform (270);
+
+ RectangleF r = new RectangleF (-e.TextRectangle.Height - (e.Item.Height - e.TextRectangle.Height) / 2, (e.TextRectangle.Width + p.X) + 4, e.TextRectangle.Height, e.TextRectangle.Width);
+
+ StringFormat sf = new StringFormat ();
+ sf.Alignment = StringAlignment.Center;
+
+ e.Graphics.DrawString (e.Text, e.TextFont, ThemeEngine.Current.ResPool.GetSolidBrush (e.TextColor), r, sf);
+
+ e.Graphics.Restore (gs);
+ } else
+ TextRenderer.DrawText (e.Graphics, e.Text, e.TextFont, e.TextRectangle, e.TextColor, e.TextFormat);
+
+ ToolStripItemTextRenderEventHandler eh = (ToolStripItemTextRenderEventHandler)Events[RenderItemTextEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderLabelBackground (ToolStripItemRenderEventArgs e)
- { if (RenderLabelBackground != null) RenderLabelBackground (this, e); }
+ {
+ ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderLabelBackgroundEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderMenuItemBackground (ToolStripItemRenderEventArgs e)
- { if (RenderMenuItemBackground != null) RenderMenuItemBackground (this, e); }
+ {
+ ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderMenuItemBackgroundEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderOverflowButtonBackground (ToolStripItemRenderEventArgs e)
- { if (RenderOverflowButtonBackground != null) RenderOverflowButtonBackground (this, e); }
+ {
+ ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderOverflowButtonBackgroundEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderSeparator (ToolStripSeparatorRenderEventArgs e)
- { if (RenderSeparator != null) RenderSeparator (this, e); }
+ {
+ ToolStripSeparatorRenderEventHandler eh = (ToolStripSeparatorRenderEventHandler)Events [RenderSeparatorEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderSplitButtonBackground (ToolStripItemRenderEventArgs e)
- { if (RenderSplitButtonBackground != null) RenderSplitButtonBackground (this, e); }
+ {
+ ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderSplitButtonBackgroundEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderStatusStripSizingGrip (ToolStripRenderEventArgs e)
- { if (RenderStatusStripSizingGrip != null) RenderStatusStripSizingGrip (this, e); }
+ {
+ StatusStrip ss = (StatusStrip)e.ToolStrip;
+
+ if (ss.SizingGrip == true)
+ DrawSizingGrip (e.Graphics, ss.SizeGripBounds);
+
+ ToolStripRenderEventHandler eh = (ToolStripRenderEventHandler)Events [RenderStatusStripSizingGripEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderToolStripBackground (ToolStripRenderEventArgs e)
- { if (RenderToolStripBackground != null) RenderToolStripBackground (this, e); }
+ {
+ ToolStripRenderEventHandler eh = (ToolStripRenderEventHandler)Events [RenderToolStripBackgroundEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderToolStripBorder (ToolStripRenderEventArgs e)
- { if (RenderToolStripBorder != null) RenderToolStripBorder (this, e); }
+ {
+ ToolStripRenderEventHandler eh = (ToolStripRenderEventHandler)Events [RenderToolStripBorderEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderToolStripContentPanelBackground (ToolStripContentPanelRenderEventArgs e)
- { if (RenderToolStripContentPanelBackground != null) RenderToolStripContentPanelBackground (this, e); }
+ {
+ ToolStripContentPanelRenderEventHandler eh = (ToolStripContentPanelRenderEventHandler)Events [RenderToolStripContentPanelBackgroundEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderToolStripPanelBackground (ToolStripPanelRenderEventArgs e)
- { if (RenderToolStripPanelBackground != null) RenderToolStripPanelBackground (this, e); }
+ {
+ ToolStripPanelRenderEventHandler eh = (ToolStripPanelRenderEventHandler)Events [RenderToolStripPanelBackgroundEvent];
+ if (eh != null)
+ eh (this, e);
+ }
protected virtual void OnRenderToolStripStatusLabelBackground (ToolStripItemRenderEventArgs e)
- { if (RenderToolStripStatusLabelBackground != null) RenderToolStripStatusLabelBackground (this, e); }
+ {
+ ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderToolStripStatusLabelBackgroundEvent];
+ if (eh != null)
+ eh (this, e);
+ }
#endregion
#region Public Events
- public event ToolStripArrowRenderEventHandler RenderArrow;
- public event ToolStripItemRenderEventHandler RenderButtonBackground;
- public event ToolStripItemRenderEventHandler RenderDropDownButtonBackground;
- public event ToolStripGripRenderEventHandler RenderGrip;
- public event ToolStripRenderEventHandler RenderImageMargin;
- public event ToolStripItemRenderEventHandler RenderItemBackground;
- public event ToolStripItemImageRenderEventHandler RenderItemCheck;
- public event ToolStripItemImageRenderEventHandler RenderItemImage;
- public event ToolStripItemTextRenderEventHandler RenderItemText;
- public event ToolStripItemRenderEventHandler RenderLabelBackground;
- public event ToolStripItemRenderEventHandler RenderMenuItemBackground;
- public event ToolStripItemRenderEventHandler RenderOverflowButtonBackground;
- public event ToolStripSeparatorRenderEventHandler RenderSeparator;
- public event ToolStripItemRenderEventHandler RenderSplitButtonBackground;
- public event ToolStripRenderEventHandler RenderStatusStripSizingGrip;
- public event ToolStripRenderEventHandler RenderToolStripBackground;
- public event ToolStripRenderEventHandler RenderToolStripBorder;
- public event ToolStripContentPanelRenderEventHandler RenderToolStripContentPanelBackground;
- public event ToolStripPanelRenderEventHandler RenderToolStripPanelBackground;
- public event ToolStripItemRenderEventHandler RenderToolStripStatusLabelBackground;
+ EventHandlerList events;
+
+ EventHandlerList Events {
+ get {
+ if (events == null)
+ events = new EventHandlerList ();
+ return events;
+ }
+ }
+
+ static object RenderArrowEvent = new object ();
+ static object RenderButtonBackgroundEvent = new object ();
+ static object RenderDropDownButtonBackgroundEvent = new object ();
+ static object RenderGripEvent = new object ();
+ static object RenderImageMarginEvent = new object ();
+ static object RenderItemBackgroundEvent = new object ();
+ static object RenderItemCheckEvent = new object ();
+ static object RenderItemImageEvent = new object ();
+ static object RenderItemTextEvent = new object ();
+ static object RenderLabelBackgroundEvent = new object ();
+ static object RenderMenuItemBackgroundEvent = new object ();
+ static object RenderOverflowButtonBackgroundEvent = new object ();
+ static object RenderSeparatorEvent = new object ();
+ static object RenderSplitButtonBackgroundEvent = new object ();
+ static object RenderStatusStripSizingGripEvent = new object ();
+ static object RenderToolStripBackgroundEvent = new object ();
+ static object RenderToolStripBorderEvent = new object ();
+ static object RenderToolStripContentPanelBackgroundEvent = new object ();
+ static object RenderToolStripPanelBackgroundEvent = new object ();
+ static object RenderToolStripStatusLabelBackgroundEvent = new object ();
+
+ public event ToolStripArrowRenderEventHandler RenderArrow {
+ add { Events.AddHandler (RenderArrowEvent, value); }
+ remove {Events.RemoveHandler (RenderArrowEvent, value); }
+ }
+ public event ToolStripItemRenderEventHandler RenderButtonBackground {
+ add { Events.AddHandler (RenderButtonBackgroundEvent, value); }
+ remove {Events.RemoveHandler (RenderButtonBackgroundEvent, value); }
+ }
+ public event ToolStripItemRenderEventHandler RenderDropDownButtonBackground {
+ add { Events.AddHandler (RenderDropDownButtonBackgroundEvent, value); }
+ remove {Events.RemoveHandler (RenderDropDownButtonBackgroundEvent, value); }
+ }
+ public event ToolStripGripRenderEventHandler RenderGrip {
+ add { Events.AddHandler (RenderGripEvent, value); }
+ remove {Events.RemoveHandler (RenderGripEvent, value); }
+ }
+ public event ToolStripRenderEventHandler RenderImageMargin {
+ add { Events.AddHandler (RenderImageMarginEvent, value); }
+ remove {Events.RemoveHandler (RenderImageMarginEvent, value); }
+ }
+ public event ToolStripItemRenderEventHandler RenderItemBackground {
+ add { Events.AddHandler (RenderItemBackgroundEvent, value); }
+ remove {Events.RemoveHandler (RenderItemBackgroundEvent, value); }
+ }
+ public event ToolStripItemImageRenderEventHandler RenderItemCheck {
+ add { Events.AddHandler (RenderItemCheckEvent, value); }
+ remove {Events.RemoveHandler (RenderItemCheckEvent, value); }
+ }
+ public event ToolStripItemImageRenderEventHandler RenderItemImage {
+ add { Events.AddHandler (RenderItemImageEvent, value); }
+ remove {Events.RemoveHandler (RenderItemImageEvent, value); }
+ }
+ public event ToolStripItemTextRenderEventHandler RenderItemText {
+ add { Events.AddHandler (RenderItemTextEvent, value); }
+ remove {Events.RemoveHandler (RenderItemTextEvent, value); }
+ }
+ public event ToolStripItemRenderEventHandler RenderLabelBackground {
+ add { Events.AddHandler (RenderLabelBackgroundEvent, value); }
+ remove {Events.RemoveHandler (RenderLabelBackgroundEvent, value); }
+ }
+ public event ToolStripItemRenderEventHandler RenderMenuItemBackground {
+ add { Events.AddHandler (RenderMenuItemBackgroundEvent, value); }
+ remove {Events.RemoveHandler (RenderMenuItemBackgroundEvent, value); }
+ }
+ public event ToolStripItemRenderEventHandler RenderOverflowButtonBackground {
+ add { Events.AddHandler (RenderOverflowButtonBackgroundEvent, value); }
+ remove {Events.RemoveHandler (RenderOverflowButtonBackgroundEvent, value); }
+ }
+ public event ToolStripSeparatorRenderEventHandler RenderSeparator {
+ add { Events.AddHandler (RenderSeparatorEvent, value); }
+ remove {Events.RemoveHandler (RenderSeparatorEvent, value); }
+ }
+ public event ToolStripItemRenderEventHandler RenderSplitButtonBackground {
+ add { Events.AddHandler (RenderSplitButtonBackgroundEvent, value); }
+ remove {Events.RemoveHandler (RenderSplitButtonBackgroundEvent, value); }
+ }
+ public event ToolStripRenderEventHandler RenderStatusStripSizingGrip {
+ add { Events.AddHandler (RenderStatusStripSizingGripEvent, value); }
+ remove {Events.RemoveHandler (RenderStatusStripSizingGripEvent, value); }
+ }
+ public event ToolStripRenderEventHandler RenderToolStripBackground {
+ add { Events.AddHandler (RenderToolStripBackgroundEvent, value); }
+ remove {Events.RemoveHandler (RenderToolStripBackgroundEvent, value); }
+ }
+ public event ToolStripRenderEventHandler RenderToolStripBorder {
+ add { Events.AddHandler (RenderToolStripBorderEvent, value); }
+ remove {Events.RemoveHandler (RenderToolStripBorderEvent, value); }
+ }
+ public event ToolStripContentPanelRenderEventHandler RenderToolStripContentPanelBackground {
+ add { Events.AddHandler (RenderToolStripContentPanelBackgroundEvent, value); }
+ remove {Events.RemoveHandler (RenderToolStripContentPanelBackgroundEvent, value); }
+ }
+ public event ToolStripPanelRenderEventHandler RenderToolStripPanelBackground {
+ add { Events.AddHandler (RenderToolStripPanelBackgroundEvent, value); }
+ remove {Events.RemoveHandler (RenderToolStripPanelBackgroundEvent, value); }
+ }
+ public event ToolStripItemRenderEventHandler RenderToolStripStatusLabelBackground {
+ add { Events.AddHandler (RenderToolStripStatusLabelBackgroundEvent, value); }
+ remove {Events.RemoveHandler (RenderToolStripStatusLabelBackgroundEvent, value); }
+ }
+ #endregion
+
+ #region Private Methods
+ internal static Image CreateMirrorImage (Image normalImage)
+ {
+ if (normalImage == null)
+ return null;
+
+ Bitmap b = new Bitmap (normalImage);
+ b.RotateFlip (RotateFlipType.RotateNoneFlipX);
+
+ return b;
+ }
+
+ private void DrawBackground (Graphics g, Rectangle bounds, Image image, ImageLayout layout)
+ {
+ // Center and Tile don't matter if the image is larger than the control
+ if (layout == ImageLayout.Center || layout == ImageLayout.Tile)
+ if (image.Size.Width >= bounds.Size.Width && image.Size.Height >= bounds.Size.Height)
+ layout = ImageLayout.None;
+
+ switch (layout) {
+ case ImageLayout.None:
+ g.DrawImageUnscaledAndClipped (image, bounds);
+ break;
+ case ImageLayout.Tile:
+ int x = 0;
+ int y = 0;
+
+ while (y < bounds.Height) {
+ while (x < bounds.Width) {
+ g.DrawImageUnscaledAndClipped (image, bounds);
+ x += image.Width;
+ }
+ x = 0;
+ y += image.Height;
+ }
+ break;
+ case ImageLayout.Center:
+ Rectangle r = new Rectangle ((bounds.Size.Width - image.Size.Width) / 2, (bounds.Size.Height - image.Size.Height) / 2, image.Width, image.Height);
+ g.DrawImageUnscaledAndClipped (image, r);
+ break;
+ case ImageLayout.Stretch:
+ g.DrawImage (image, bounds);
+ break;
+ case ImageLayout.Zoom:
+ if (((float)image.Height / (float)image.Width) < ((float)bounds.Height / (float)bounds.Width)) {
+ Rectangle rzoom = new Rectangle (0, 0, bounds.Width, (int)((float)bounds.Width * ((float)image.Height / (float)image.Width)));
+ rzoom.Y = (bounds.Height - rzoom.Height)/ 2;
+ g.DrawImage (image, rzoom);
+ } else {
+ Rectangle rzoom = new Rectangle (0, 0, (int)((float)bounds.Height * ((float)image.Width / (float)image.Height)), bounds.Height);
+ rzoom.X = (bounds.Width - rzoom.Width) / 2;
+ g.DrawImage (image, rzoom);
+ }
+ break;
+ }
+ }
+
+ internal static void DrawRightArrow (Graphics g, Pen p, int x, int y)
+ {
+ g.DrawLine (p, x, y, x, y + 6);
+ g.DrawLine (p, x + 1, y + 1, x + 1, y + 5);
+ g.DrawLine (p, x + 2, y + 2, x + 2, y + 4);
+ g.DrawLine (p, x + 2, y + 3, x + 3, y + 3);
+ }
+
+ internal static void DrawDownArrow (Graphics g, Pen p, int x, int y)
+ {
+ g.DrawLine (p, x + 1, y, x + 5, y);
+ g.DrawLine (p, x + 2, y + 1, x + 4, y + 1);
+ g.DrawLine (p, x + 3, y + 1, x + 3, y + 2);
+ }
+
+ private void DrawSizingGrip (Graphics g, Rectangle rect)
+ {
+ DrawGripBox (g, rect.Right - 5, rect.Bottom - 5);
+ DrawGripBox (g, rect.Right - 9, rect.Bottom - 5);
+ DrawGripBox (g, rect.Right - 5, rect.Bottom - 9);
+ DrawGripBox (g, rect.Right - 13, rect.Bottom - 5);
+ DrawGripBox (g, rect.Right - 5, rect.Bottom - 13);
+ DrawGripBox (g, rect.Right - 9, rect.Bottom - 9);
+ }
+
+ private void DrawGripBox (Graphics g, int x, int y)
+ {
+ g.DrawRectangle (Pens.White, x + 1, y + 1, 1, 1);
+ g.DrawRectangle (ThemeEngine.Current.ResPool.GetPen (Color.FromArgb (172, 168, 153)), x, y, 1, 1);
+ }
#endregion
}
}
-#endif
\ No newline at end of file