private void OnItemSelect(object sender) { SimpleDirection s = (SimpleDirection)sender; Direction dir = s.ToDirection(); nValue = new Vector2(dir.X, dir.Y); }
/// <summary> /// Convert to <see cref="Direction"/>. /// </summary> /// <param name="simpleDirection"></param> /// <returns></returns> public static Direction ToDirection(this SimpleDirection simpleDirection) { switch (simpleDirection) { case Empty: return(Direction.Empty); case Up: return(Direction.Up); case Down: return(Direction.Down); case Left: return(Direction.Left); case Right: return(Direction.Right); case LeftUp: return(Direction.LeftUp); case LeftDown: return(Direction.LeftDown); case RightUp: return(Direction.RightUp); case RightDown: return(Direction.RightDown); default: throw new ArgumentException("uknown argument", nameof(simpleDirection)); } ; }
/// <summary> /// It returns true if argument is <see cref="SimpleDirection.Down"/> or <see cref="SimpleDirection.Up"/>. /// </summary> /// <param name="dir"></param> /// <returns></returns> public static bool IsConnectedWithY(this SimpleDirection dir) { switch (dir) { case Up: case Down: return(true); default: return(false); } }
public SimpleRelativeDirection Minus2ndDirection(SimpleDirection bd) { Direct = Direct - (int)bd; return(this); }
public SimpleRelativeDirection Minus1stDirection(SimpleDirection bd) { Direct = Direct - (int)bd * 0x10; return(this); }
public SimpleRelativeDirection Add2ndDirection(SimpleDirection bd) { Direct = Direct + (int)bd; return(this); }
public SimpleRelativeDirection Add1stDirection(SimpleDirection bd) { Direct = Direct + (int)bd * 0x10; return(this); }
public bool Is2ndDirection(SimpleDirection bd) { return((Direct & (int)bd) == (int)bd); }
public bool Is1stDirection(SimpleDirection bd) { return((Direct & (int)bd * 0x10) == (int)bd * 0x10); }
public static void FillRectGradient(Rectangle rect, Graphics graf, Color color1, Color color2, SimpleDirection direction) { FillRectGradient(rect, graf, color1, color2, direction, 0); }
public static void FillRectGradient(Rectangle rect, Graphics graf, Color color1, Color color2, SimpleDirection direction, int cornerRadius) { Point p1; switch (direction) { case SimpleDirection.Vertical: p1 = new Point(rect.X + rect.Width / 2, rect.Y); break; case SimpleDirection.Diagonal2: p1 = new Point(rect.Right - cornerRadius, rect.Y + cornerRadius); break; case SimpleDirection.Diagonal: p1 = new Point(rect.X + cornerRadius, rect.Y + cornerRadius); break; default: p1 = new Point(rect.X - 1, rect.Y + rect.Height / 2); break; } Point p2; switch (direction) { case SimpleDirection.Vertical: p2 = new Point(rect.X + rect.Width / 2, rect.Y + rect.Height); break; case SimpleDirection.Diagonal2: p2 = new Point(rect.X + cornerRadius, rect.Bottom - cornerRadius); break; case SimpleDirection.Diagonal: p2 = new Point(rect.Right - cornerRadius, rect.Bottom - cornerRadius); break; default: p2 = new Point(rect.Right + 1, rect.Y + rect.Height / 2); break; } if (cornerRadius <= 0) { if (p1 != p2) { graf.FillRectangle(new LinearGradientBrush(p1, p2, color1, color2), rect); } else { graf.FillRectangle(new SolidBrush(color1), rect); } } else { GraphicsPath gfxPath = DrawPath.RoundCorner(rect, cornerRadius); gfxPath.CloseAllFigures(); if (p1 != p2) { graf.FillPath(new LinearGradientBrush(p1, p2, color1, color2), gfxPath); } else { graf.FillPath(new SolidBrush(color1), gfxPath); } } }
/// <summary> /// It returns true if argument is <see cref="SimpleDirection.Left"/> or <see cref="SimpleDirection.Right"/> /// </summary> /// <param name="dir"></param> /// <returns></returns> public static bool IsConnectedWithX(this SimpleDirection dir) { return(!IsConnectedWithY(dir)); }