예제 #1
0
 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));
 }
예제 #2
0
 // 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);
 }
예제 #3
0
파일: Shape.cs 프로젝트: lishxi/_SharpMap
 // 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);
 }
예제 #4
0
        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);
        }
예제 #5
0
파일: Shape.cs 프로젝트: lishxi/_SharpMap
 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;
 }