# c# 颜色RGB到HSB互相转换

  1 /// <summary>
2         /// 色相，饱和度，亮度转换成rgb值
3         /// </summary>
4         /// <returns></returns>
5         public static float[] HSB2RGB(float[] hsb)
6         {
7             if (hsb[0] == 360)
8             {
9                 hsb[0] = 0;
10             }
11             float[] rgb = new float[3];
12             float r = 0;
13             float g = 0;
14             float b = 0;
15
16             if (hsb[1] == 0)
17             {
18                 r = g = b = hsb[2];
19             }
20             else
21             {
22                 float sectorPos = hsb[0] / 60f;
23                 int sectorNum = (int)Math.Floor(sectorPos);
24                 float fractionalSector = sectorPos - sectorNum;
25                 float p = hsb[2] * (1 - hsb[1]);
26                 float q = hsb[2] * (1 - (hsb[1] * fractionalSector));
27                 float t = hsb[2] * (1 - (hsb[1] * (1 - fractionalSector)));
28                 switch (sectorNum)
29                 {
30                     case 0:
31                         r = hsb[2];
32                         g = t;
33                         b = p;
34                         break;
35                     case 1:
36                         r = q;
37                         g = hsb[2];
38                         b = p;
39                         break;
40                     case 2:
41                         r = p;
42                         g = hsb[2];
43                         b = t;
44                         break;
45                     case 3:
46                         r = p;
47                         g = q;
48                         b = hsb[2];
49                         break;
50                     case 4:
51                         r = t;
52                         g = p;
53                         b = hsb[2];
54                         break;
55                     case 5:
56                         r = hsb[2];
57                         g = p;
58                         b = q;
59                         break;
60                 }
61
62             }
63             return new float[] { r * 255, g * 255, b * 255 };
64         }
65         /// <summary>
66         /// 将rgb类型的颜色转换为hsb
67         /// </summary>
68         /// <param name="rgb"></param>
69         /// <returns></returns>
70         public static float[] RGB2HSB(float[] rgb)
71         {
72             float[] hsb = new float[3];
73             float r = rgb[0];
74             float g = rgb[1];
75             float b = rgb[2];
76
77             float max = Math.Max(r, Math.Max(g, b));
78             if (max <= 0)
79             {
80                 return hsb;
81             }
82             float min = Math.Min(r, Math.Min(g, b));
83             float dif = max - min;
84             if (max > min)
85             {
86                 if (g == max)
87                 {
88                     hsb[0] = (b - r) / dif * 60f + 120f;
89                 }
90                 else if (b == max)
91                 {
92                     hsb[0] = (r - g) / dif * 60f + 240f;
93                 }
94                 else if (b > g)
95                 {
96                     hsb[0] = (g - b) / dif * 60f + 360f;
97                 }
98                 else
99                 {
100                     hsb[0] = (g - b) / dif * 60f;
101                 }
102                 if (hsb[0] < 0)
103                 {
104                     hsb[0] = hsb[0] + 360f;
105                 }
106             }
107             else
108             {
109                 hsb[0] = 0;
110             }
111             hsb[1] = dif / max;
112             hsb[2] = max / 255f;
113             return hsb;
114         }

|
11月前
|
C#
C# 图片RGB处理判断
C# 图片RGB处理判断 需要：根据一张原始图的RGB平均值和新的图片的RGB平均值的差距，来判断图中是否出现除原图中物体外的其他物体 前提：.Net framework 4.8 及以上 示例代码： 程序集：using System;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imagin...
42 0
|

Baumer工业相机堡盟工业相机使用BGAPI SDK将图像数据转换为Bitmap的几种方式（C#）（RGB）
Baumer工业相机堡盟工业相机使用BGAPI SDK将图像数据转换为Bitmap的几种方式（C#）（RGB）
87 0
|

Win8 Metro(C#)数字图像处理--2.46图像RGB分量增强效果

916 0
|
4月前
|

C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用，包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言，结合这些工具，能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战，但C#在Web开发领域的前景将持续拓展。
158 3
|
4月前
|
SQL 开发框架 安全
C#编程与多线程处理
173 3
|
9天前
|

【8月更文挑战第31天】Unity 是一款强大的游戏开发平台，支持多种编程语言，其中 C# 最为常用。本文介绍 C# 在 Unity 中的应用，涵盖脚本生命周期、常用函数、事件处理及面向对象编程等核心概念。通过具体示例，展示如何编写有效的 C# 脚本，包括 Start、Update 和 LateUpdate 等生命周期方法，以及碰撞检测和类继承等高级技巧，帮助开发者掌握 Unity 脚本编程基础，提升游戏开发效率。
25 0

DDNS