.NET C#生成随机颜色,基于YUV模式判断颜色明亮度,可以控制亮度,生成暗色或者亮色

随机颜色在日常开发中很常用到,有时候要控制颜色明亮度,比如在白色背景网页上的随机颜色,一般要求颜色稍微暗一些,如果生成太亮的颜色会造成阅读困难,再比如你想判断生成的背景色是暗色还是亮色,以决定前景色是白色还是黑色.

采用YUV颜色模式来进行判断.YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号B-Y(即U)、R-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。

RGB可以换算成YUV值,其中,我们只需要利用Y值即可,其他的暂时不用理会,换算公式如下:

Y = 0.299R + 0.587G + 0.114B

三点:1 Y值范围为0-255

2 Y值越大,颜色越亮

3  采用的是碰撞检测方法,先随机生成一个颜色,判断是否在指定的范围内,如果不在则重新生成,循环判断。所以指定范围的时候不能太小,否则可能产生几十甚至几百的循环次数,效率大大降低。可以以255的中间点设定边界范围,以产生较亮的或暗的颜色。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注