PDA

View Full Version : انتخاب رندوم رنگ



طبیب دل
سه شنبه 20 مهر 1389, 12:46 عصر
با سلام
چطوری می شه رنگ رو به طور رندوم انتخاب کرد؟

syntiberium
سه شنبه 20 مهر 1389, 13:22 عصر
این یه نمونه ی ساده :



Random r1 = new Random();

this.BackColor = Color.FromArgb(r1.Next(0, 255), r1.Next(0, 255), r1.Next(0, 255));

ad.davachi
سه شنبه 20 مهر 1389, 13:39 عصر
به زبان C#‎

using System.Security.Cryptography;

public static Color GetRandomColor()
{
KnownColor[] colors = (KnownColor[])Enum.GetValues(typeof(KnownColor));
return Color.FromKnownColor(colors[GetRandomNo(colors.Length)]);
}

private static int GetRandomNo(int MaxValue)
{
RandomNumberGenerator rng = RNGCryptoServiceProvider.Create();
byte[] bytes = new byte[4];
rng.GetBytes(bytes);
int rndNum = BitConverter.ToInt32(bytes, 0);
return Math.Abs(rndNum % MaxValue);
}

mehdi.mousavi
دوشنبه 01 آذر 1389, 11:50 صبح
سلام.
کافی هستش یه عدد Random بین 0 و 0xffffffff تولید کنید و سپس با استفاده از FromArgb به رنگ تصادفی خودتون برسید:

Color color = Color.FromArgb((int)(0xff000000 + new Random().Next(0, 0xffffff + 1)));

موفق باشید.

پاورقی: در واقع منظورم این هستش که نیازی نیست R/G/B رو بصورت جداگانه و تصادفی تولید کنید. کافیه یه عدد در Range ای که گفتم ایجاد کنید و از همون تک عدد برای ایجاد RGB سود ببرید تا کدتون Performance بالاتری نیز داشته باشه. دقت کنید که در کد فوق، من Alpha رو 255 در نظر گرفتم.

Salar Ashgi
دوشنبه 01 آذر 1389, 17:20 عصر
یه مثال دیگر :


private void button1_Click(object sender, EventArgs e)
{
string [] clrs = Enum.GetNames(typeof(KnownColor));
Random rnd = new Random();
Color cr = Color.FromName(clrs[rnd.Next(0, clrs.Length)]);
button1.BackColor = cr;
}


موفق باشید ./