C语言转VB....极短的几句,就是看不懂,好心人来帮帮忙

sansan5920 2016-01-10 04:37:26
RGBType HSV_to_RGB( HSVType HSV )
{
// H is given on [0, 1] or UNDEFINED. S and V are given on [0, 1].
// RGB are each returned on [0, 1].
float h = HSV.h * 6, s = HSV.s, v = HSV.v, m, n, f;
int i;

if (h == 0) h=.01;
if(h == UNDEFINED)
return RGBTypeMake(v, v, v);
i = floorf(h);
f = h - i;
if(!(i & 1)) f = 1 - f; // if i is even
m = v * (1 - s);
n = v * (1 - s * f);
switch (i)
{
case 6:
case 0: return RGBTypeMake(v, n, m);
case 1: return RGBTypeMake(n, v, m);
case 2: return RGBTypeMake(m, v, n);
case 3: return RGBTypeMake(m, n, v);
case 4: return RGBTypeMake(n, m, v);
case 5: return RGBTypeMake(v, m, n);
}
return RGBTypeMake(0, 0, 0);
}
...全文
101 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
一笑拔剑 2016-01-13
  • 打赏
  • 举报
回复
百度文库里有一篇 VB中RGB颜色模型与HSV颜色模型转换的实现 直接下就可以了 H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。 纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。 V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。 RGB转化到HSV的算法: max=max(R,G,B) min=min(R,G,B) if R = max, H = (G-B)/(max-min) if G = max, H = 2 + (B-R)/(max-min) if B = max, H = 4 + (R-G)/(max-min) H = H * 60 if H < 0, H = H + 360 V=max(R,G,B) S=(max-min)/max c里中间那段就是这个算法
一笑拔剑 2016-01-13
  • 打赏
  • 举报
回复
HSV转化到RGB的算法 if s = 0 R=G=B=V else H /= 60; i = INTEGER(H) f = H - i a = V * ( 1 - s ) b = V * ( 1 - s * f ) c = V * ( 1 - s * (1 - f ) ) switch(i) case 0: R = V; G = c; B = a; case 1: R = b; G = v; B = a; case 2: R = a; G = v; B = c; case 3: R = a; G = b; B = v; case 4: R = c; G = a; B = v; case 5: R = v; G = a; B = b;

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧