您的位置:首页 > 编程语言 > C#

在.net(C#)中随机生成较深的颜色

2014-07-19 20:20 190 查看
原文地址:/article/2814418.html

有时为了满足现实的需要,我们想生成随机的较深的颜色,比如:彩色二维码,为了让手机、二维码识别设备可以正确识别,必须使用较深的颜色。

如下图所示:





那么,如何实现呢?

以下为源码:

//C# Code:

using System;

using System.Drawing;

namespace Lgms.Net.QRCode.Codec.Util

{

public class ColorUtil

{

public static System.Drawing.Color GetRandomColor()

{

Random randomNum_1 = new Random(Guid.NewGuid().GetHashCode());

System.Threading.Thread.Sleep(randomNum_1.Next(1));

int int_Red = randomNum_1.Next(255);

Random randomNum_2 = new Random((int)DateTime.Now.Ticks);

int int_Green = randomNum_2.Next(255);

Random randomNum_3 = new Random(Guid.NewGuid().GetHashCode());

int int_Blue = randomNum_3.Next(255);

int_Blue = (int_Red + int_Green > 380) ? int_Red + int_Green - 380 : int_Blue;

int_Blue = (int_Blue > 255) ? 255 : int_Blue;

return GetDarkerColor(System.Drawing.Color.FromArgb(int_Red, int_Green, int_Blue));

}

//获取加深颜色

public static Color GetDarkerColor(Color color)

{

const int max = 255;

int increase = new Random(Guid.NewGuid().GetHashCode()).Next(30, 255); //还可以根据需要调整此处的值

int r = Math.Abs(Math.Min(color.R - increase, max));

int g = Math.Abs(Math.Min(color.G - increase, max));

int b = Math.Abs(Math.Min(color.B - increase, max));

return Color.FromArgb(r, g, b);

}

}

希望对有需要的朋友有用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: