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 ...
随机推荐
- React入门实例教程
文章转自:阮一峰 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React ...
- vijos 1557:bzoj:1413: [ZJOI2009]取石子游戏
Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排.游戏由两个人进行,两人轮流操作,每次操作者都可以从 ...
- [51nod1410]回文调整
给一个序列,选择其中一个区间,这个区间内的数字顺序可以随意互换.问有多少这样的选择使得整个序列(不是选择的区间)是一个回文. 说明:为了要使得整个序列是一个回文,可以选择一个区间对里面的数字进行调整, ...
- UVA11039-Building designing
Building designing Time limit: 3.000 seconds An architect wants to design a very high building. The ...
- 2017ecjtu-summer training #6 Gym 100952D
D. Time to go back time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- QT 操作 excel 教程
前言:环境 win7 64位,QT4.8.5,QT Creator 在 .pro 文件中加入语句"CONFIG+=qaxcontainer"; 源码如下: //main.cpp # ...
- 从零开始学习前端开发 — 11、CSS3选择器
一.基本选择器 1.* 通配符(通用选择器) 2.id选择器 3.class选择器(类选择器) 4.标签选择器(元素选择符) 5.群组选择器 (选择符1,选择符2{...}) 二.层次选择器(关系选择 ...
- 关于Struts传递json给easyui的随笔
今天在公司写测试代码,由于公司用的是ssh框架做的商城项目,我想先实现下简单的增删改查,奈何没有很好的后台页面(毕竟不能测试代码直接在他的项目里改啊) 所以想到了淘淘商城中有这个后台的管理页面,打算一 ...
- 关于在vue-cli中使用微信自动登录和分享
(以下所有接口由后台提供) 一.微信自动登录 //定义事件 methods:{ //判断是否微信登陆 是不是微信浏览器 isWeiXin() { let ua = window.navigator.u ...
- PHP正则式PCRE
PHP正则式PCRE的总结差不多就下边这些了.参考 PCRE与perl的差异 . 锚(^.$.\A.\Z/\z):^.$在多行模式下是非紧固的,在单行模式下是紧固的:而\A.\Z / \z在任何模 ...