public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if ((destinationType == typeof(string)) && (value is CornersProperty)) { CornersProperty _Corners = (CornersProperty)value; return(string.Format("{0},{1},{2},{3}", new object[] { _Corners.LowerLeft, _Corners.LowerRight, _Corners.UpperLeft, _Corners.UpperRight })); } return(base.ConvertTo(context, culture, RuntimeHelpers.GetObjectValue(value), destinationType)); }
// Methods public Shape() { base.Paint += new PaintEventHandler(this.Shape_Paint); this._Corners = new CornersProperty(); this._FocalPoints = new cFocalPoints(0.5, 0.5, 0.0, 0.0); this._BorderStyle = DashStyle.Solid; this._RadiusInner = 0f; this._BorderShow = true; this._BorderWidth = 2f; this._ColorFillSolid = SystemColors.Control; Color[] S0 = new Color[] { Color.White, Color.White }; this._ColorFillBlend = new cBlendItems(S0, new float[] { 0f, 1f }); this._FillType = eFillType.Solid; this._FillTypeLinear = LinearGradientMode.Horizontal; this._BorderColor = Color.Black; this._RegionClip = false; this.InitializeComponent(); this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); }
public GraphicsPath GetRoundedRectPath(RectangleF BaseRect, CornersProperty rCorners) { RectangleF ArcRect; SizeF S0; GraphicsPath MyPath = new GraphicsPath(); if (rCorners.All == -1) { GraphicsPath L0 = MyPath; if (rCorners.UpperLeft == 0) { L0.AddLine(BaseRect.X, BaseRect.Y, BaseRect.X, BaseRect.Y); } else { S0 = new SizeF((float)(rCorners.UpperLeft * 2), (float)(rCorners.UpperLeft * 2)); ArcRect = new RectangleF(BaseRect.Location, S0); L0.AddArc(ArcRect, 180f, 90f); } if (rCorners.UpperRight == 0) { L0.AddLine(BaseRect.X + rCorners.UpperLeft, BaseRect.Y, BaseRect.Right - rCorners.UpperRight, BaseRect.Top); } else { S0 = new SizeF((float)(rCorners.UpperRight * 2), (float)(rCorners.UpperRight * 2)); ArcRect = new RectangleF(BaseRect.Location, S0); ArcRect.X = BaseRect.Right - (rCorners.UpperRight * 2); L0.AddArc(ArcRect, 270f, 90f); } if (rCorners.LowerRight == 0) { L0.AddLine(BaseRect.Right, BaseRect.Top + rCorners.UpperRight, BaseRect.Right, BaseRect.Bottom - rCorners.LowerRight); } else { S0 = new SizeF((float)(rCorners.LowerRight * 2), (float)(rCorners.LowerRight * 2)); ArcRect = new RectangleF(BaseRect.Location, S0); ArcRect.Y = BaseRect.Bottom - (rCorners.LowerRight * 2); ArcRect.X = BaseRect.Right - (rCorners.LowerRight * 2); L0.AddArc(ArcRect, 0f, 90f); } if (rCorners.LowerLeft == 0) { L0.AddLine(BaseRect.Right - rCorners.LowerRight, BaseRect.Bottom, BaseRect.X - rCorners.LowerLeft, BaseRect.Bottom); } else { S0 = new SizeF((float)(rCorners.LowerLeft * 2), (float)(rCorners.LowerLeft * 2)); ArcRect = new RectangleF(BaseRect.Location, S0); ArcRect.Y = BaseRect.Bottom - (rCorners.LowerLeft * 2); L0.AddArc(ArcRect, 90f, 90f); } L0.CloseFigure(); L0 = null; return(MyPath); } GraphicsPath L1 = MyPath; if (rCorners.All == 0) { L1.AddRectangle(BaseRect); } else { S0 = new SizeF((float)(rCorners.All * 2), (float)(rCorners.All * 2)); ArcRect = new RectangleF(BaseRect.Location, S0); L1.AddArc(ArcRect, 180f, 90f); ArcRect.X = BaseRect.Right - (rCorners.All * 2); L1.AddArc(ArcRect, 270f, 90f); ArcRect.Y = BaseRect.Bottom - (rCorners.All * 2); L1.AddArc(ArcRect, 0f, 90f); ArcRect.X = BaseRect.Left; L1.AddArc(ArcRect, 90f, 90f); } L1.CloseFigure(); L1 = null; return(MyPath); }
public GraphicsPath GetRoundedRectPath(RectangleF BaseRect, CornersProperty rCorners) { RectangleF ArcRect; SizeF S0; GraphicsPath MyPath = new GraphicsPath(); if (rCorners.All == -1) { GraphicsPath L0 = MyPath; if (rCorners.UpperLeft == 0) { L0.AddLine(BaseRect.X, BaseRect.Y, BaseRect.X, BaseRect.Y); } else { S0 = new SizeF((float) (rCorners.UpperLeft * 2), (float) (rCorners.UpperLeft * 2)); ArcRect = new RectangleF(BaseRect.Location, S0); L0.AddArc(ArcRect, 180f, 90f); } if (rCorners.UpperRight == 0) { L0.AddLine(BaseRect.X + rCorners.UpperLeft, BaseRect.Y, BaseRect.Right - rCorners.UpperRight, BaseRect.Top); } else { S0 = new SizeF((float) (rCorners.UpperRight * 2), (float) (rCorners.UpperRight * 2)); ArcRect = new RectangleF(BaseRect.Location, S0); ArcRect.X = BaseRect.Right - (rCorners.UpperRight * 2); L0.AddArc(ArcRect, 270f, 90f); } if (rCorners.LowerRight == 0) { L0.AddLine(BaseRect.Right, BaseRect.Top + rCorners.UpperRight, BaseRect.Right, BaseRect.Bottom - rCorners.LowerRight); } else { S0 = new SizeF((float) (rCorners.LowerRight * 2), (float) (rCorners.LowerRight * 2)); ArcRect = new RectangleF(BaseRect.Location, S0); ArcRect.Y = BaseRect.Bottom - (rCorners.LowerRight * 2); ArcRect.X = BaseRect.Right - (rCorners.LowerRight * 2); L0.AddArc(ArcRect, 0f, 90f); } if (rCorners.LowerLeft == 0) { L0.AddLine(BaseRect.Right - rCorners.LowerRight, BaseRect.Bottom, BaseRect.X - rCorners.LowerLeft, BaseRect.Bottom); } else { S0 = new SizeF((float) (rCorners.LowerLeft * 2), (float) (rCorners.LowerLeft * 2)); ArcRect = new RectangleF(BaseRect.Location, S0); ArcRect.Y = BaseRect.Bottom - (rCorners.LowerLeft * 2); L0.AddArc(ArcRect, 90f, 90f); } L0.CloseFigure(); L0 = null; return MyPath; } GraphicsPath L1 = MyPath; if (rCorners.All == 0) { L1.AddRectangle(BaseRect); } else { S0 = new SizeF((float) (rCorners.All * 2), (float) (rCorners.All * 2)); ArcRect = new RectangleF(BaseRect.Location, S0); L1.AddArc(ArcRect, 180f, 90f); ArcRect.X = BaseRect.Right - (rCorners.All * 2); L1.AddArc(ArcRect, 270f, 90f); ArcRect.Y = BaseRect.Bottom - (rCorners.All * 2); L1.AddArc(ArcRect, 0f, 90f); ArcRect.X = BaseRect.Left; L1.AddArc(ArcRect, 90f, 90f); } L1.CloseFigure(); L1 = null; return MyPath; }