Exemple #1
0
 private void RenderPathCustomColors(PathRule pathRule, ColoringMode coloringMode, MapColorPalette palette, Color fromColor, Color middleColor, Color toColor)
 {
     pathRule.UseCustomColors = true;
     SetRuleColors(pathRule.GetColors(coloringMode, palette, fromColor, middleColor, toColor, GetBucketCount()), pathRule.CustomColors);
 }
        public Color[] GenerateColors(MapColorPalette palette, int colorCount)
        {
            Color[] array = new Color[colorCount];
            if (palette == MapColorPalette.Random)
            {
                Random random = new Random(465804847);
                for (int i = 0; i < colorCount; i++)
                {
                    Color color = Color.FromArgb(random.Next(100, 256), random.Next(100, 256), random.Next(100, 256));
                    if (this.CheckDistance(color, array, i, 50 / colorCount))
                    {
                        array[i] = color;
                    }
                    else
                    {
                        i--;
                    }
                }
            }
            switch (palette)
            {
            case MapColorPalette.Light:
            {
                Random random5 = new Random(265804847);
                for (int m = 0; m < colorCount; m++)
                {
                    Color color5 = Color.FromArgb(random5.Next(160, 256), random5.Next(160, 256), random5.Next(160, 256));
                    if (this.CheckDistance(color5, array, m, 15 / colorCount))
                    {
                        array[m] = color5;
                    }
                    else
                    {
                        m--;
                    }
                }
                break;
            }

            case MapColorPalette.SemiTransparent:
            {
                Random random3 = new Random(465889847);
                for (int k = 0; k < colorCount; k++)
                {
                    Color color3 = Color.FromArgb(128, random3.Next(256), random3.Next(256), random3.Next(256));
                    if (this.CheckDistance(color3, array, k, 50 / colorCount))
                    {
                        array[k] = color3;
                    }
                    else
                    {
                        k--;
                    }
                }
                break;
            }

            case MapColorPalette.Dundas:
            {
                Random random4 = new Random(965889847);
                for (int l = 0; l < colorCount; l++)
                {
                    if (l < ColorGenerator.colorsDundas.Length)
                    {
                        array[l] = ColorGenerator.colorsDundas[l];
                    }
                    else
                    {
                        Color color4 = Color.FromArgb(random4.Next(256), random4.Next(64, 256), random4.Next(64, 256));
                        if (this.CheckDistance(color4, array, l, 50 / colorCount))
                        {
                            array[l] = color4;
                        }
                        else
                        {
                            l--;
                        }
                    }
                }
                break;
            }

            case MapColorPalette.Pacific:
            {
                Random random2 = new Random(539136961);
                for (int j = 0; j < colorCount; j++)
                {
                    if (j < ColorGenerator.colorsPacific.Length)
                    {
                        array[j] = ColorGenerator.colorsPacific[j];
                    }
                    else
                    {
                        Color color2 = Color.FromArgb(random2.Next(256), random2.Next(64, 256), random2.Next(64, 256));
                        if (this.CheckDistance(color2, array, j, 50 / colorCount))
                        {
                            array[j] = color2;
                        }
                        else
                        {
                            j--;
                        }
                    }
                }
                break;
            }
            }
            return(array);
        }
Exemple #3
0
 private void RenderShapeCustomColors(ShapeRule shapeRule, ColoringMode coloringMode, MapColorPalette palette, Color fromColor, Color middleColor, Color toColor)
 {
     shapeRule.UseCustomColors = true;
     SetRuleColors(shapeRule.GetColors(coloringMode, palette, fromColor, middleColor, toColor, GetBucketCount()), shapeRule.CustomColors);
 }
Exemple #4
0
        internal Color[] GetColors(ColoringMode coloringMode, MapColorPalette colorPalette, Color startColor, Color middleColor, Color endColor, int colorCount)
        {
            if (colorCount == 0)
            {
                return(null);
            }
            if (coloringMode == ColoringMode.DistinctColors)
            {
                return(new ColorGenerator().GenerateColors(colorPalette, colorCount));
            }
            switch (colorCount)
            {
            case 1:
                return(new Color[1]
                {
                    startColor
                });

            case 2:
                return(new Color[2]
                {
                    startColor,
                    endColor
                });

            default:
            {
                bool flag = middleColor.A == 0;
                byte a    = startColor.A;
                _ = middleColor.A;
                byte a2 = endColor.A;
                startColor  = Color.FromArgb(255, startColor);
                middleColor = Color.FromArgb(255, middleColor);
                endColor    = Color.FromArgb(255, endColor);
                Color[] array = new Color[colorCount];
                array[0] = startColor;
                array[colorCount - 1] = endColor;
                Rectangle rect = new Rectangle(0, 0, colorCount, 1);
                if (colorCount % 2 == 1)
                {
                    rect.Width--;
                }
                Bitmap bitmap = new Bitmap(colorCount, 1);
                using (LinearGradientBrush linearGradientBrush = new LinearGradientBrush(rect, startColor, endColor, 0f, isAngleScaleable: false))
                {
                    ColorBlend colorBlend = new ColorBlend();
                    if (flag)
                    {
                        colorBlend.Positions = new float[2]
                        {
                            0f,
                            1f
                        };
                        colorBlend.Colors = new Color[2]
                        {
                            startColor,
                            endColor
                        };
                    }
                    else
                    {
                        colorBlend.Positions = new float[3]
                        {
                            0f,
                            0.5f,
                            1f
                        };
                        colorBlend.Colors = new Color[3]
                        {
                            startColor,
                            middleColor,
                            endColor
                        };
                    }
                    linearGradientBrush.InterpolationColors = colorBlend;
                    using (Graphics graphics = Graphics.FromImage(bitmap))
                    {
                        graphics.FillRectangle(linearGradientBrush, rect);
                    }
                }
                float num  = (a2 - a) / (colorCount - 1);
                float num2 = (int)a;
                for (int i = 1; i < colorCount - 1; i++)
                {
                    num2 += num;
                    Color pixel = bitmap.GetPixel(i, 0);
                    array[i] = Color.FromArgb((int)num2, pixel);
                }
                return(array);
            }
            }
        }