c# 颜色RGB到HSB互相转换
/// <summary>
/// 色相,饱和度,亮度转换成rgb值
/// </summary>
/// <returns></returns>
public static float[] HSB2RGB(float[] hsb)
{
if (hsb[] == )
{
hsb[] = ;
}
float[] rgb = new float[];
float r = ;
float g = ;
float b = ; if (hsb[] == )
{
r = g = b = hsb[];
}
else
{
float sectorPos = hsb[] / 60f;
int sectorNum = (int)Math.Floor(sectorPos);
float fractionalSector = sectorPos - sectorNum;
float p = hsb[] * ( - hsb[]);
float q = hsb[] * ( - (hsb[] * fractionalSector));
float t = hsb[] * ( - (hsb[] * ( - fractionalSector)));
switch (sectorNum)
{
case :
r = hsb[];
g = t;
b = p;
break;
case :
r = q;
g = hsb[];
b = p;
break;
case :
r = p;
g = hsb[];
b = t;
break;
case :
r = p;
g = q;
b = hsb[];
break;
case :
r = t;
g = p;
b = hsb[];
break;
case :
r = hsb[];
g = p;
b = q;
break;
} }
return new float[] { r * , g * , b * };
}
/// <summary>
/// 将rgb类型的颜色转换为hsb
/// </summary>
/// <param name="rgb"></param>
/// <returns></returns>
public static float[] RGB2HSB(float[] rgb)
{
float[] hsb = new float[];
float r = rgb[];
float g = rgb[];
float b = rgb[]; float max = Math.Max(r, Math.Max(g, b));
if (max <= )
{
return hsb;
}
float min = Math.Min(r, Math.Min(g, b));
float dif = max - min;
if (max > min)
{
if (g == max)
{
hsb[] = (b - r) / dif * 60f + 120f;
}
else if (b == max)
{
hsb[] = (r - g) / dif * 60f + 240f;
}
else if (b > g)
{
hsb[] = (g - b) / dif * 60f + 360f;
}
else
{
hsb[] = (g - b) / dif * 60f;
}
if (hsb[] < )
{
hsb[] = hsb[] + 360f;
}
}
else
{
hsb[] = ;
}
hsb[] = dif / max;
hsb[] = max / 255f;
return hsb;
}
c# 颜色RGB到HSB互相转换的更多相关文章
- RGB与HSB之间转换
先来了解一些概念: 1.RGB是一种加色模型,就是将不同比例的Red/Green/Blue混合在一起得到新颜色.通常RGB颜色模型表示为: 2.HSB(HSV) 通过色相/饱和度/亮度三要素来表达颜色 ...
- RGB和HSB的转换推算
RGB三原色是基于人肉眼对光线的生理作用.人眼内有三种椎状体“对这三种光线频率所能感受的带宽最大,也能独立刺激这三种颜色的受光体”,因此RGB称为三原色.比如,黄色波长的光对人眼的刺激效果,和红色与绿 ...
- 【C#】RGB,CMYK,HSB各种颜色表示的转换(转)
[C#]RGB,CMYK,HSB各种颜色表示的转换 一.表示颜色的方式有很多种,如RGB,CMYK,HSB,Hex等等 1.RGB:这种表示颜色由三原色构成,通过红,绿,蓝三种颜色分量的不同,组合 ...
- RGB,CMYK,HSB各种颜色表示的转换 C#语言
Introduction Why an article on "colors"? It's the same question I asked myself before writ ...
- C# RGB和HSB相互转换
背景 最近做的项目中有这样一个场景,设置任意一种颜色,得到这种颜色偏深和偏浅的两种颜色.也就是说取该颜色同色系的深浅两种颜色.首先想到的是调节透明度,但效果不理想.后来尝试调节颜色亮度,发现这才是正解 ...
- RGB与HSB之间的转换公式
先来了解一些概念: 1.RGB是一种加色模型,就是将不同比例的Red/Green/Blue混合在一起得到新颜色.通常RGB颜色模型表示为: 2.HSB(HSV) 通过色相/饱和度/亮度三要素来表达颜色 ...
- YUV / RGB 格式及快速转换算法
1 前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用 的过程,所以在不同的应用领域中为了更好更准确 ...
- 常用icon以及color颜色RGB值和对应颜色效果图
Android谷歌官方扁平化设计常用icon集合 Android谷歌官方扁平化设计color颜色RGB值和对应颜色效果图.
- e585. Converting Between RGB and HSB Colors
This example demonstrates how to convert between a color value in RGB (three integer values in the r ...
随机推荐
- LABjs、RequireJS、SeaJS 哪个最好用?为什么?- 玉伯的回答
LABjs 的核心是 LAB(Loading and Blocking):Loading 指异步并行加载,Blocking 是指同步等待执行.LABjs 通过优雅的语法(script 和 wait)实 ...
- BZOJ:3911: SGU383 Caravans(三角剖分)
原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3911 直接求最小生成树显然边太多,考虑少用点边. 连出来的边肯定是没相交的,我们需要做一下 ...
- eclipse(Version: Mars.2 Release (4.5.2)) groovy plugin install process.
There are two way to install : First: 1.check your eclipse version:Help-->About Eclipse 2.open He ...
- 【android studio】 gradle配置成本地离线zip包
http://blog.csdn.net/jingleye/article/details/52689260 关键词:distributionUrl修改成本地路径,android stud ...
- Dora.Interception, 一个为.NET Core度身打造的AOP框架[3]:Interceptor的注册
在<不一样的Interceptor>中我们着重介绍了Dora.Interception中最为核心的对象Interceptor,以及定义Interceptor类型的一些约定.由于Interc ...
- js获取不带单位的像素值
所谓获取不带单位的像素值就是获取比如元素的宽度.高度.字体大小.外边距.内边距等值但是去掉像素单位. 比如:某一个元素的宽度是100px,现在我要获取这个这个值但是不带单位“px”,对于这种问题你会怎 ...
- Spark算子--coalesce和repartition
coalesce和repartition--Transformation类算子 代码示例
- HTML 5 标签
HTML 5 标签 标签定义文档中的节(section.区段).比如章节.页眉.页脚或文档中的其他部分. E 9+.Firefox.Opera.Chrome 和 Safari 标签. 注释:IE 8 ...
- LAMP与LNMP架构的区别及其具体的选择说明
LAMP==Linux+Apache+Mysql+PHP LNMP==Linux+Nginx+Mysql+PHP 以上两只架构是目前网站的主流架构 LAMP和LNMP最主要的区别在于: 一个使用的是A ...
- SQLite 链接大全
http://www.cnblogs.com/stephen-liu74/archive/2012/01/22/2328757.html