Ejemplo n.º 1
0
        internal override void Render(GaugeGraphics g)
        {
            if (Common == null || !base.Visible || GetScale() == null)
            {
                return;
            }
            Common.GaugeCore.TraceWrite("GaugePaint", SR.TraceStartRendering(Name));
            g.StartHotRegion(this);
            GetScale().SetDrawRegion(g);
            RectangleF    rectangleF        = CalculateRangeRectangle();
            CircularScale scale             = GetScale();
            double        valueLimit        = scale.GetValueLimit(StartValue);
            double        valueLimit2       = scale.GetValueLimit(EndValue);
            float         positionFromValue = scale.GetPositionFromValue(valueLimit);
            float         num = scale.GetPositionFromValue(valueLimit2) - positionFromValue;

            if (Math.Round(num, 4) == 0.0)
            {
                g.RestoreDrawRegion();
                g.EndHotRegion();
                Common.GaugeCore.TraceWrite("GaugePaint", SR.TraceRenderingComplete(Name));
                return;
            }
            Pen          pen          = null;
            Brush        brush        = null;
            GraphicsPath graphicsPath = null;

            try
            {
                graphicsPath = g.GetCircularRangePath(rectangleF, positionFromValue + 90f, num, StartWidth, EndWidth, Placement);
                if (graphicsPath == null)
                {
                    g.RestoreDrawRegion();
                    g.EndHotRegion();
                    Common.GaugeCore.TraceWrite("GaugePaint", SR.TraceRenderingComplete(Name));
                    return;
                }
                RectangleF rect = rectangleF;
                if (Placement != 0)
                {
                    float num2 = StartWidth;
                    if (num2 < EndWidth)
                    {
                        num2 = EndWidth;
                    }
                    if (Placement == Placement.Outside)
                    {
                        rect.Inflate(num2, num2);
                    }
                    else
                    {
                        rect.Inflate(num2 / 2f, num2 / 2f);
                    }
                }
                RangeGradientType fillGradientType = base.FillGradientType;
                brush         = g.GetCircularRangeBrush(rect, positionFromValue + 90f, num, base.FillColor, base.FillHatchStyle, "", GaugeImageWrapMode.Unscaled, Color.Empty, GaugeImageAlign.TopLeft, fillGradientType, base.FillGradientEndColor);
                pen           = new Pen(base.BorderColor, base.BorderWidth);
                pen.DashStyle = g.GetPenStyle(base.BorderStyle);
                g.FillPath(brush, graphicsPath);
                if (base.BorderStyle != 0 && base.BorderWidth > 0)
                {
                    g.DrawPath(pen, graphicsPath);
                }
            }
            catch (Exception)
            {
                graphicsPath?.Dispose();
                pen?.Dispose();
                brush?.Dispose();
                g.RestoreDrawRegion();
                throw;
            }
            Common.GaugeCore.HotRegionList.SetHotRegion(this, g.GetAbsolutePoint(GetScale().GetPivotPoint()), graphicsPath);
            g.RestoreDrawRegion();
            g.EndHotRegion();
            Common.GaugeCore.TraceWrite("GaugePaint", SR.TraceRenderingComplete(Name));
        }
 public int IndexOf(CircularScale value)
 {
     return(base.List.IndexOf(value));
 }
 public void Insert(int index, CircularScale value)
 {
     base.List.Insert(index, value);
 }
 public bool Contains(CircularScale value)
 {
     return(base.List.Contains(value));
 }
 public void Remove(CircularScale value)
 {
     base.List.Remove(value);
 }
 public int Add(CircularScale value)
 {
     return(base.List.Add(value));
 }