Ejemplo n.º 1
0
 protected override void OnRender(IDrawingContext dc, RectFloat clipRect)
 {
     dc.Clear(new ColorRgba128Float?(this.BackColor));
     using (dc.UseTranslateTransform(0.5f, 0.5f, MatrixMultiplyOrder.Append))
     {
         RectDouble    num       = RectDouble.Inflate(base.ClientRectangle.ToRectInt32(), -1.0, -1.0);
         double        num3      = Math.Min(num.Width, num.Height) / 2.0;
         PointDouble   center    = new PointDouble(num.X + num3, num.Y + num3);
         double        d         = MathUtil.DegreesToRadians(this.value);
         EllipseDouble ellipse   = new EllipseDouble(center, num3 - 0.5, num3 - 0.5);
         double        thickness = this.hover ? 2.0 : 1.0;
         double        num8      = this.maxValue - this.minValue;
         if (num8 >= 360.0)
         {
             dc.FillEllipse(ellipse, validAnglesFillBrush);
             dc.DrawEllipse(ellipse, outlineBrush, thickness);
         }
         else
         {
             dc.FillEllipse(ellipse, invalidAnglesFillBrush);
             double      width = num3;
             PointDouble num14 = new PointDouble(center.X + (width * Math.Cos(MathUtil.DegreesToRadians(this.minValue))), center.Y - (width * Math.Sin(MathUtil.DegreesToRadians(this.minValue))));
             PointDouble num15 = new PointDouble(center.X + (width * Math.Cos(MathUtil.DegreesToRadians(this.maxValue))), center.Y - (width * Math.Sin(MathUtil.DegreesToRadians(this.maxValue))));
             SizeDouble  num16 = new SizeDouble(width, width);
             if (this.validRangeGeometry == null)
             {
                 this.validRangeGeometry        = new PathGeometry();
                 this.validRangeFigure          = new PathFigure();
                 this.validRangeFigure.IsFilled = true;
                 this.validRangeFigure.IsClosed = true;
                 this.validRangeGeometry.Figures.Add(this.validRangeFigure);
                 this.validRangeLineSegment1 = new LineSegment();
                 this.validRangeFigure.Segments.Add(this.validRangeLineSegment1);
                 this.validRangeArcSegment = new ArcSegment();
                 this.validRangeArcSegment.SweepDirection = SweepDirection.Counterclockwise;
                 this.validRangeFigure.Segments.Add(this.validRangeArcSegment);
                 this.validRangeLineSegment2 = new LineSegment();
                 this.validRangeFigure.Segments.Add(this.validRangeLineSegment2);
             }
             this.validRangeFigure.StartPoint     = center;
             this.validRangeLineSegment1.Point    = num14;
             this.validRangeArcSegment.Point      = num15;
             this.validRangeArcSegment.IsLargeArc = num8 >= 180.0;
             this.validRangeArcSegment.Size       = num16;
             this.validRangeLineSegment2.Point    = num15;
             dc.FillGeometry(this.validRangeGeometry, validAnglesFillBrush, null);
             dc.DrawEllipse(ellipse, outlineBrush, thickness);
             dc.DrawLine(center, num14, outlineBrush, 0.5);
             dc.DrawLine(center, num15, outlineBrush, 0.5);
         }
         double        num9   = num3 - 2.0;
         PointDouble   num10  = new PointDouble(center.X + (num9 * Math.Cos(d)), center.Y - (num9 * Math.Sin(d)));
         double        radius = 2.5;
         EllipseDouble num12  = new EllipseDouble(center, radius);
         dc.FillEllipse(num12, gripFillBrush);
         dc.DrawLine(center, num10, gripBrush, this.hover ? 2.0 : 1.5);
     }
     base.OnRender(dc, clipRect);
 }
Ejemplo n.º 2
0
        protected override void OnRender(IDrawingContext dc, RectFloat clipRect, CanvasView canvasView)
        {
            double canvasHairWidth = canvasView.CanvasHairWidth;

            if (this.handleDiameter > 2.0)
            {
                double         rotationAngle = this.handleTransform.GetRotationAngle();
                PointDouble    location      = this.handleTransform.Transform(this.handleLocation) + ((PointDouble)(this.handleLocationScreenOffset * canvasHairWidth));
                VectorDouble[] vecs          = new VectorDouble[] { new VectorDouble(-1.0, -1.0), new VectorDouble(1.0, -1.0), new VectorDouble(1.0, 1.0), new VectorDouble(-1.0, 1.0), new VectorDouble(-1.0, 0.0), new VectorDouble(1.0, 0.0), new VectorDouble(0.0, -1.0), new VectorDouble(0.0, 1.0) };
                vecs.RotateInPlace(rotationAngle);
                vecs.NormalizeInPlace();
                double num5 = ((double)this.handleAlpha) / 255.0;
                this.whiteBrush.Opacity = num5;
                this.blackBrush.Opacity = num5;
                if (this.handleShape != MoveHandleShape.Circle)
                {
                    PointDouble[] numArray2 = new PointDouble[] { location + (vecs[0] * (this.handleDiameter * canvasHairWidth)), location + (vecs[1] * (this.handleDiameter * canvasHairWidth)), location + (vecs[2] * (this.handleDiameter * canvasHairWidth)), location + (vecs[3] * (this.handleDiameter * canvasHairWidth)) };
                    PointDouble[] numArray3 = new PointDouble[] { location + (vecs[0] * ((this.handleDiameter - 1.0) * canvasHairWidth)), location + (vecs[1] * ((this.handleDiameter - 1.0) * canvasHairWidth)), location + (vecs[2] * ((this.handleDiameter - 1.0) * canvasHairWidth)), location + (vecs[3] * ((this.handleDiameter - 1.0) * canvasHairWidth)) };
                    PointDouble[] numArray4 = new PointDouble[] { location + (vecs[0] * ((this.handleDiameter - 2.0) * canvasHairWidth)), location + (vecs[1] * ((this.handleDiameter - 2.0) * canvasHairWidth)), location + (vecs[2] * ((this.handleDiameter - 2.0) * canvasHairWidth)), location + (vecs[3] * ((this.handleDiameter - 2.0) * canvasHairWidth)) };
                    dc.DrawLine(numArray2[0], numArray2[1], this.whiteBrush, canvasHairWidth);
                    dc.DrawLine(numArray2[1], numArray2[2], this.whiteBrush, canvasHairWidth);
                    dc.DrawLine(numArray2[2], numArray2[3], this.whiteBrush, canvasHairWidth);
                    dc.DrawLine(numArray2[3], numArray2[0], this.whiteBrush, canvasHairWidth);
                    dc.DrawLine(numArray3[0], numArray3[1], this.blackBrush, canvasHairWidth);
                    dc.DrawLine(numArray3[1], numArray3[2], this.blackBrush, canvasHairWidth);
                    dc.DrawLine(numArray3[2], numArray3[3], this.blackBrush, canvasHairWidth);
                    dc.DrawLine(numArray3[3], numArray3[0], this.blackBrush, canvasHairWidth);
                    dc.DrawLine(numArray4[0], numArray4[1], this.whiteBrush, canvasHairWidth);
                    dc.DrawLine(numArray4[1], numArray4[2], this.whiteBrush, canvasHairWidth);
                    dc.DrawLine(numArray4[2], numArray4[3], this.whiteBrush, canvasHairWidth);
                    dc.DrawLine(numArray4[3], numArray4[0], this.whiteBrush, canvasHairWidth);
                }
                else if (this.handleShape == MoveHandleShape.Circle)
                {
                    RectDouble rect = new RectDouble(location, SizeDouble.Zero);
                    rect.Inflate((double)((this.handleDiameter - 1.0) * canvasHairWidth), (double)((this.handleDiameter - 1.0) * canvasHairWidth));
                    dc.DrawEllipse(EllipseDouble.FromRect(rect), this.whiteBrush, canvasHairWidth);
                    rect.Inflate(-canvasHairWidth, -canvasHairWidth);
                    dc.DrawEllipse(EllipseDouble.FromRect(rect), this.blackBrush, canvasHairWidth);
                    rect.Inflate(-canvasHairWidth, -canvasHairWidth);
                    dc.DrawEllipse(EllipseDouble.FromRect(rect), this.whiteBrush, canvasHairWidth);
                }
                if (this.handleShape == MoveHandleShape.Compass)
                {
                    PointDouble  num7     = location + ((PointDouble)(vecs[0] * ((this.handleDiameter - 1.0) * canvasHairWidth)));
                    PointDouble  point    = location + ((PointDouble)(vecs[1] * ((this.handleDiameter - 1.0) * canvasHairWidth)));
                    PointDouble  num9     = location + ((PointDouble)(vecs[2] * ((this.handleDiameter - 1.0) * canvasHairWidth)));
                    PointDouble  num10    = location + ((PointDouble)(vecs[3] * ((this.handleDiameter - 1.0) * canvasHairWidth)));
                    PointDouble  num11    = new PointDouble(num7.X, (num7.Y + num10.Y) / 2.0);
                    PointDouble  num12    = new PointDouble((num7.X + point.X) / 2.0, num7.Y);
                    PointDouble  num13    = new PointDouble(point.X, (point.Y + num9.Y) / 2.0);
                    PointDouble  num14    = new PointDouble((num10.X + num9.X) / 2.0, num9.Y);
                    PointDouble  num15    = new PointDouble(num12.X, num11.Y);
                    PathGeometry geometry = new PathGeometry();
                    PathFigure   item     = new PathFigure {
                        IsClosed   = true,
                        IsFilled   = true,
                        StartPoint = num7
                    };
                    item.Segments.Add(new LineSegment(point));
                    item.Segments.Add(new LineSegment(num9));
                    item.Segments.Add(new LineSegment(num10));
                    geometry.Figures.Add(item);
                    dc.FillGeometry(geometry, this.whiteBrush, null);
                    PathGeometry geometry2 = new PathGeometry();
                    double       num16     = canvasHairWidth;
                    double       num17     = 1.35 * canvasHairWidth;
                    double       num18     = (num17 * 3.0) / 2.0;
                    double       num19     = num16 / 2.0;
                    double       num20     = (num17 * Math.Sqrt(27.0)) / 2.0;
                    PathFigure   figure2   = new PathFigure {
                        IsFilled   = true,
                        IsClosed   = true,
                        StartPoint = num11
                    };
                    figure2.Segments.Add(new LineSegment(new PointDouble(num11.X + num20, num11.Y + num18)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num11.X + num20, num11.Y + num19)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num15.X - num19, num15.Y + num19)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num14.X - num19, num14.Y - num20)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num14.X - num18, num14.Y - num20)));
                    figure2.Segments.Add(new LineSegment(num14));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num14.X + num18, num14.Y - num20)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num14.X + num19, num14.Y - num20)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num15.X + num19, num15.Y + num19)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num13.X - num20, num13.Y + num19)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num13.X - num20, num13.Y + num18)));
                    figure2.Segments.Add(new LineSegment(num13));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num13.X - num20, num13.Y - num18)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num13.X - num20, num13.Y - num19)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num15.X + num19, num15.Y - num19)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num12.X + num19, num12.Y + num20)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num12.X + num18, num12.Y + num20)));
                    figure2.Segments.Add(new LineSegment(num12));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num12.X - num18, num12.Y + num20)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num12.X - num19, num12.Y + num20)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num15.X - num19, num15.Y - num19)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num11.X + num20, num11.Y - num19)));
                    figure2.Segments.Add(new LineSegment(new PointDouble(num11.X + num20, num11.Y - num18)));
                    geometry2.Figures.Add(figure2);
                    dc.FillGeometry(geometry2, this.blackBrush, null);
                }
            }
            base.OnRender(dc, clipRect, canvasView);
        }