Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class ColorHelper
- {
- public static IEnumerable<Color> GetRandomColors(int amount)
- {
- var results = new List<Color>();
- var random = new Random();
- var threshold = amount / 2d;
- var maxAmount = Math.Min(amount, threshold);
- var div = amount - maxAmount;
- var difference = 360d / maxAmount;
- //ændr denne variabel til 1.0 for at få pænere (skarpere farver).
- double prettiness = 0.25;
- for (double i = 0.0, o = 0.0; i < amount || o < 1; i++, o+= (1.0 - prettiness) / div)
- {
- results.Add(HsvToRgb(i * difference, 1.0, prettiness + o));
- }
- return results;
- }
- public static Color GetRgb(double r, double g, double b)
- {
- return Color.FromArgb(255, (byte)(r * 255.0), (byte)(g * 255.0), (byte)(b * 255.0));
- }
- public static Color HsvToRgb(double h, double s, double v)
- {
- int hi = (int)Math.Floor(h / 60.0) % 6;
- double f = (h / 60.0) - Math.Floor(h / 60.0);
- double p = v * (1.0 - s);
- double q = v * (1.0 - (f * s));
- double t = v * (1.0 - ((1.0 - f) * s));
- Color ret;
- switch (hi)
- {
- case 0:
- ret = GetRgb(v, t, p);
- break;
- case 1:
- ret = GetRgb(q, v, p);
- break;
- case 2:
- ret = GetRgb(p, v, t);
- break;
- case 3:
- ret = GetRgb(p, q, v);
- break;
- case 4:
- ret = GetRgb(t, p, v);
- break;
- case 5:
- ret = GetRgb(v, p, q);
- break;
- default:
- ret = Color.FromArgb(0xFF, 0x00, 0x00, 0x00);
- break;
- }
- return ret;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment