示例#1
0
        private void FillDecorators()
        {
            c1Gauge1.BeginUpdate();

            CommonShape commonShape = new CommonShape();

            commonShape.Name          = "my arrow";
            commonShape.StartWidth    = 2.5;
            commonShape.EndAngle      = 60.0;
            commonShape.EndWidth      = 2.5;
            commonShape.EndSwellWidth = 1;
            c1Gauge1.CommonShapes.Add(commonShape);

            CommonColorMap colorMap = new CommonColorMap();

            colorMap.Name = "my colors";
            colorMap.ValueColorFalloff = C1GaugeValueColorFalloff.None;
            colorMap.ValueColors.Add(new C1GaugeValueColor(0.0, Color.SteelBlue, 1.0));
            colorMap.ValueColors.Add(new C1GaugeValueColor(double.NaN, 2, Color.Transparent, 1.0));
            colorMap.ValueColors.Add(new C1GaugeValueColor(double.NaN, 1, Color.SteelBlue, 1.0));
            colorMap.ValueColors.Add(new C1GaugeValueColor(double.NaN, 0, Color.Transparent, 1.0));
            c1LinearGauge1.ColorMaps.Add(colorMap);

            for (int i = 0; i <= 100; i += 2)
            {
                C1GaugeSingleMark mark = new C1GaugeSingleMark();
                mark.Border.Color                = Color.LightSteelBlue;
                mark.Filling.BrushType           = C1GaugeBrushType.Gradient;
                mark.Filling.Color2              = Color.LightSteelBlue;
                mark.Gradient.Direction          = C1GaugeGradientDirection.RadialOuter;
                mark.CustomShape.CommonShapeName = "my arrow";
                mark.Length       = 6;
                mark.Width        = 2.5;
                mark.ColorMapName = "my colors";
                mark.Value        = i;

                double x, y;
                GetXY(i, out x, out y);
                mark.Position = x * 0.01 + 0.5;
                mark.Location = y + 50;

                double x1, y1;
                GetXY(i + 0.01, out x1, out y1);
                double l     = Math.Sqrt((x1 - x) * (x1 - x) + (y1 - y) * (y1 - y));
                double alpha = Math.Asin((y1 - y) / l);
                if (x1 < x)
                {
                    alpha = Math.PI - alpha;
                }
                mark.ShapeAngle = -alpha * 180.0 / Math.PI + 90.0;

                c1LinearGauge1.Decorators.Add(mark);
            }
            c1Gauge1.EndUpdate();
        }
示例#2
0
        private void FillDecorators()
        {
            c1Gauge1.BeginUpdate();

            CommonColorMap colorMap = new CommonColorMap();

            colorMap.Name = "green";
            colorMap.ValueColorFalloff = C1GaugeValueColorFalloff.None;
            colorMap.ValueColors.Add(new C1GaugeValueColor(0.0, Color.LimeGreen, 1.0));
            colorMap.ValueColors.Add(new C1GaugeValueColor(double.NaN, 100, Color.DimGray, 1.0));
            c1LinearGauge1.ColorMaps.Add(colorMap);

            colorMap      = new CommonColorMap();
            colorMap.Name = "yellow";
            colorMap.ValueColorFalloff = C1GaugeValueColorFalloff.None;
            colorMap.ValueColors.Add(new C1GaugeValueColor(0.0, Color.Yellow, 1.0));
            colorMap.ValueColors.Add(new C1GaugeValueColor(double.NaN, 100, Color.DimGray, 1.0));
            c1LinearGauge1.ColorMaps.Add(colorMap);

            colorMap      = new CommonColorMap();
            colorMap.Name = "red";
            colorMap.ValueColorFalloff = C1GaugeValueColorFalloff.None;
            colorMap.ValueColors.Add(new C1GaugeValueColor(0.0, Color.FromArgb(255, 64, 64), 1.0));
            colorMap.ValueColors.Add(new C1GaugeValueColor(double.NaN, 100, Color.DimGray, 1.0));
            c1LinearGauge1.ColorMaps.Add(colorMap);

            for (int i = 0; i < 100; i++)
            {
                C1GaugeSingleMark mark = new C1GaugeSingleMark();
                mark.Border.LineStyle = C1GaugeBorderStyle.None;
                mark.Shape            = C1GaugeMarkShape.Round;
                mark.Width            = 2;
                double dl = i * 0.035;
                mark.Length = 6 + dl * dl * dl;
                if (i < 60)
                {
                    mark.ColorMapName = "green";
                }
                else if (i < 85)
                {
                    mark.ColorMapName = "yellow";
                }
                else
                {
                    mark.ColorMapName = "red";
                }
                mark.Value = i / 100.0;

                double x, y;
                GetXY(i, out x, out y);
                mark.Position = x * 0.01 + 0.27;
                mark.Location = y + 35;

                double x1, y1;
                GetXY(i + 0.01, out x1, out y1);
                double dy    = (y1 - y) * 0.75;
                double l     = Math.Sqrt((x1 - x) * (x1 - x) + dy * dy);
                double alpha = Math.Asin(dy / l);
                if (x1 < x)
                {
                    alpha = Math.PI - alpha;
                }
                mark.ShapeAngle = alpha * 180.0 / Math.PI;

                c1LinearGauge1.Decorators.Add(mark);
            }
            c1Gauge1.EndUpdate();
        }