private void pictureBox1_Click(object sender, EventArgs e) { pictureBox1.Refresh(); Point p = pictureBox1.PointToClient(Cursor.Position); //чтобы можно было получать цвет под курсором textBox1.Text = ColorTranslator.ToHtml(bit1.GetPixel(p.X, p.Y)).ToString(); //вывод HEX кода цвета //рисование белого и черного кругов под курсором Graphics circle = pictureBox1.CreateGraphics(); circle.DrawEllipse(penWhite, p.X, p.Y, 10, 10); circle.DrawEllipse(penBlack, p.X - 1, p.Y - 1, 12, 12); common = ColorTranslator.FromHtml(textBox1.Text); //текущий цвет int R = common.R, G = common.G, B = common.B; //получение RGB из текущего цвета double H1, S1, H2, S2; int R1, G1, B1, R2, G2, B2; ColorLogic.RGBToHSV(R, G, B, out H1, out S1, out double V1); H1 = Math.Round(H1); S1 = Math.Round(S1 * 100); H2 = H1; S2 = S1; ColorLogic.HSVToRGB(H1, S1, 0, out R1, out G1, out B1); ColorLogic.HSVToRGB(H2, S2, 100, out R2, out G2, out B2); top = Color.FromArgb(R1, G1, B1); //получение цвета сверху bottom = Color.FromArgb(R2, G2, B2); //и снизу по изменению насыщенности panel1.BackColor = common; //вывод текущего цвета на панель pictureBox2.Invalidate(); //нарисовать градиент на pictureBox2 }
//случайные цвета частицам private void button1_Click(object sender, EventArgs e) { Random rand = new Random(); double H = rand.Next(0, 360), H1 = rand.Next(0, 360), S = rand.Next(0, 100), S1 = rand.Next(0, 100), V = rand.Next(0, 100), V1 = rand.Next(0, 100); int R, R1, G, G1, B, B1; ColorLogic.HSVToRGB(H, S, V, out R, out G, out B); ColorLogic.HSVToRGB(H1, S1, V1, out R1, out G1, out B1); emitter.ColorFrom = Color.FromArgb(R, G, B); emitter.ColorTo = Color.FromArgb(R1, G1, B1); }