/// <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互相转换的更多相关文章

  1. RGB与HSB之间转换

    先来了解一些概念: 1.RGB是一种加色模型,就是将不同比例的Red/Green/Blue混合在一起得到新颜色.通常RGB颜色模型表示为: 2.HSB(HSV) 通过色相/饱和度/亮度三要素来表达颜色 ...

  2. RGB和HSB的转换推算

    RGB三原色是基于人肉眼对光线的生理作用.人眼内有三种椎状体“对这三种光线频率所能感受的带宽最大,也能独立刺激这三种颜色的受光体”,因此RGB称为三原色.比如,黄色波长的光对人眼的刺激效果,和红色与绿 ...

  3. 【C#】RGB,CMYK,HSB各种颜色表示的转换(转)

    [C#]RGB,CMYK,HSB各种颜色表示的转换   一.表示颜色的方式有很多种,如RGB,CMYK,HSB,Hex等等 1.RGB:这种表示颜色由三原色构成,通过红,绿,蓝三种颜色分量的不同,组合 ...

  4. RGB,CMYK,HSB各种颜色表示的转换 C#语言

    Introduction Why an article on "colors"? It's the same question I asked myself before writ ...

  5. C# RGB和HSB相互转换

    背景 最近做的项目中有这样一个场景,设置任意一种颜色,得到这种颜色偏深和偏浅的两种颜色.也就是说取该颜色同色系的深浅两种颜色.首先想到的是调节透明度,但效果不理想.后来尝试调节颜色亮度,发现这才是正解 ...

  6. RGB与HSB之间的转换公式

    先来了解一些概念: 1.RGB是一种加色模型,就是将不同比例的Red/Green/Blue混合在一起得到新颜色.通常RGB颜色模型表示为: 2.HSB(HSV) 通过色相/饱和度/亮度三要素来表达颜色 ...

  7. YUV / RGB 格式及快速转换算法

    1 前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用 的过程,所以在不同的应用领域中为了更好更准确 ...

  8. 常用icon以及color颜色RGB值和对应颜色效果图

    Android谷歌官方扁平化设计常用icon集合   Android谷歌官方扁平化设计color颜色RGB值和对应颜色效果图.

  9. 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 ...

随机推荐

  1. Uva 11729 Commando War (简单贪心)

    Uva 11729  Commando War (简单贪心) There is a war and it doesn't look very promising for your country. N ...

  2. ZOJ3602:Count the Trees

    我是在neuqvj上交的这题:http://vj.acmclub.cn/problem/viewProblem.action?id=17848 本来是挺容易的树同构题,可是节点数比较多,愣是把普通ha ...

  3. POJ 1655 Balancing Act【树的重心】

    Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14251   Accepted: 6027 De ...

  4. Travelling(spfa+状态压缩dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 Travelling Time Limit: 6000/3000 MS (Java/Others ...

  5. css3 样式 圆角

    第一次学习css3 现在总结一下,方便以后查看: 1.border-radius:25px; 这个用来增加圆角属性 2.CSS3边框阴影 在 CSS3 中,box-shadow 用于向方框添加阴影: ...

  6. api接口token验证

    接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效: 2.因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过程: 3.有点接口需要用户登录 ...

  7. Mysql优化方面的知识

    Mysql优化方面的知识 第一方面:30种mysql优化sql语句查询的方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避 ...

  8. Core Graphics 和Quartz 2D的区别

    quartz是一个通用的术语,用于描述在IOS和MAC OS X中整个媒体层用到的多种技术 包括图形.动画.音频.适配.  Quart 2D 是一组二位绘图和渲染API,Core Graphic会使用 ...

  9. Android查缺补漏(View篇)--事件分发机制源码分析

    在上一篇博文中分析了事件分发的流程及规则,本篇会从源码的角度更进一步理解事件分发机制的原理,如果对事件分发规则还不太清楚的童鞋,建议先看一下上一篇博文 <Android查缺补漏(View篇)-- ...

  10. eclipse导入web项目变成java项目解决办法

    右键工程,properties-> Project Facets-> 点convert to faceted..连接 -> 把Dynamic Web Moudle勾上