VB中HSL怎麼轉換為RGB,VB中HSL怎麼轉換為RGB

時間 2021-06-01 07:58:53

1樓:匿名_熱心網友

建議你用timer控制元件來控制,這個快慢也好掌握,不過也可以把你的**發來看看,好給你解決

2樓:匿名使用者

rgb轉hsb有公式 是啥?反過來算也不麻煩

3樓:丁滿

這裡有** hsl和rgb互轉的 (注:hsb就是hsl,b和l都有亮度的意思)

public type hsb

hue as integer

saturation as integer

brightness as integer

end type

public type rgb

red as integer

green as integer

bue as integer

end type

' 轉換rgb到hsb

public function rgb2hsb(byval r as integer, byval g as integer, byval b as integer) as hsb

dim nh as single, ns as single, nv as single

dim nr as single, ng as single, nb as single

dim ndelr as single, ndelg as single, ndelb as single

dim nmax as single, nmin as single, ndelmax as single

nr = r / 255

ng = g / 255

nb = b / 255

nmax = max(max(nr, ng), nb)

nmin = min(min(nr, ng), nb)

ndelmax = nmax - nmin

nv = nmax

if (ndelmax = 0) then

nh = 0

ns = 0

else

ns = ndelmax / nmax

ndelr = (((nmax - nr) / 6) + (ndelmax / 2)) / ndelmax

ndelg = (((nmax - ng) / 6) + (ndelmax / 2)) / ndelmax

ndelb = (((nmax - nb) / 6) + (ndelmax / 2)) / ndelmax

if (nr = nmax) then

nh = ndelb - ndelg

elseif (ng = nmax) then

nh = (1 / 3) + ndelr - ndelb

elseif (nb = nmax) then

nh = (2 / 3) + ndelg - ndelr

end if

if (nh < 0) then nh = nh + 1

if (nh > 1) then nh = nh - 1

end if

rgb2hsb.hue = nh * 360

rgb2hsb.saturation = ns * 100

rgb2hsb.brightness = nv * 100

end function

' 轉換hsb到rgb

public function hsb2rgb(byval h as integer, byval s as integer, byval b as integer) as rgb

dim nh as single, ns as single, nv as single

dim nr as single, ng as single, nb as single

dim hi as single, f as single, p as single, q as single, t as single

nh = h / 360

ns = s / 100

nv = b / 100

if (s = 0) then

nr = nv * 255

ng = nv * 255

nb = nv * 255

else

hi = nh * 6

if (hi = 6) then hi = 0

f = int(hi)

p = nv * (1 - ns)

q = nv * (1 - ns * (hi - f))

t = nv * (1 - ns * (1 - (hi - f)))

if (f = 0) then

nr = nv

ng = t

nb = p

elseif (f = 1) then

nr = q

ng = nv

nb = p

elseif (f = 2) then

nr = p

ng = nv

nb = t

elseif (f = 3) then

nr = p

ng = q

nb = nv

elseif (f = 4) then

nr = t

ng = p

nb = nv

else

nr = nv

ng = p

nb = q

end if

end if

hsb2rgb.red = nr * 255

hsb2rgb.green = ng * 255

hsb2rgb.bue = nb * 255

end function

把h,s,l當成引數呼叫,返回值就是一個型別為「rgb」的使用者定義型別

示例:dim aa as rgb

aa=hsb2rgb(1, 2, 3)

print "r:" & aa.red & " g:" & aa.green & " b:" & aa.bue

回答得很晚,不知道能否幫到題主,請您設為最佳答案把 謝謝!

4樓:匿名使用者

誰知道vb裡面hsb轉rgb怎麼轉?rgb轉hsb有公式,但是反過來hsb轉rgb該如何轉換?

5樓:匿名使用者

只要找到對應的演算法就行了

hsl與rgb顏色系統如何相互轉換?

6樓:匿名使用者

hsl與rgb轉換

a) rgb→hsl的演算法描述。

步驟1:把rgb值轉成【0,1】中數值。

步驟2:找出r,g和b中的最大值。

步驟3:設l=(maxcolor + mincolor)/2

步驟4:如果最大和最小的顏色值相同,即表示灰色,那麼s定義為0,而h未定義並在程式中通常寫成0。

步驟5:否則,測試l:

if l<0.5, s=(maxcolor-mincolor)/(maxcolor + mincolor)

if l>=0.5, s=(maxcolor-mincolor)/(2.0-maxcolor-mincolor)

步驟6: if r=maxcolor, h=(g-b)/(maxcolor-mincolor)

if g=maxcolor, h=2.0+(b-r)/(maxcolor-mincolor)

if b=maxcolor, h=4.0+(r-g)/(maxcolor-mincolor)

步驟7:從第6步的計算看,h分成0~6區域。rgb顏色空間是一個立方體而hsl顏色空間是兩個六角形錐體,其中的l是rgb立方體的主對角線。

因此,rgb立方體的頂點:紅、黃、綠、青、藍和品紅就成為hsl六角形的頂點,而數值0~6就告訴我們h在哪個部分。h=h*60.

0,如果h為負值,則加360。

什麼是rgb空間和hsl空間,兩者如何相互轉化

7樓:伸縮縫的春天

因為這樣比較容易檢測鏡頭邊界,l是亮度,人眼最敏感,rgb的變化不是很敏感,不好做分割。

怎樣才能將影象轉換為rgb顏色模式

8樓:匿名使用者

在選單欄上影象-模式。rgb顏色 ,希望我的回答能夠幫到你。

9樓:一日愛三餐

開啟photoshop軟體,選單欄——模式——rgb顏色。就可以了

10樓:

影象 模式 rgb 這裡有很多選項的

11樓:貢依絲

hsl與rgb轉換

a) rgb→hsl的演算法描述。

步驟1:把rgb值轉成中數值。

步驟2:找出r,g和b中的最大值。

步驟3:設l=(maxcolor + mincolor)/2

步驟4:如果最大和最小的顏色值相同,即表示灰色,那麼s定義為0,而h未定義並在程式中通常寫成0。

步驟5:否則,測試l:

if l<0.5, s=(maxcolor-mincolor)/(maxcolor + mincolor)

if l>=0.5, s=(maxcolor-mincolor)/(2.0-maxcolor-mincolor)

步驟6: if r=maxcolor, h=(g-b)/(maxcolor-mincolor)

if g=maxcolor, h=2.0+(b-r)/(maxcolor-mincolor)

if b=maxcolor, h=4.0+(r-g)/(maxcolor-mincolor)

步驟7:從第6步的計算看,h分成0~6區域。rgb顏色空間是一個立方體而hsl顏色空間是兩個六角形錐體,其中的l是rgb立方體的主對角線。

因此,rgb立方體的頂點:紅、黃、綠、青、藍和品紅就成為hsl六角形的頂點,而數值0~6就告訴我們h在哪個部分。h=h*60.

0,如果h為負值,則加360。

VB中label顯示怎麼換行,在VB中怎麼怎麼設定label自動換行

有兩種方法實現label換行 1 將label控制元件的可以調整控制元件label的寬度和高度,即可實現自動換行 2 控制換行。例如 private sub form load with label1 caption 12 vbcrlf 345 vbcrlf 6789 end with end su...

vb中怎麼控制LINE的寬度,vb中怎麼控制一個LINE的寬度

1 在窗體上新增一個line1控制元件。2 在它的屬性框裡修改borderwidth的值為想要的值,比如輸入5。3 程式設計實現 line1.borderwidth 6 堵義 事先在窗體裡新增一個line控制元件 需要顯示的時候指定它的位置 寬度用width屬性試試。 line沒有寬度可設,你要設 ...

VB怎麼從1 8中取數,VB怎麼從1 8中取6個數

private sub command1 click for i1 1 to 8 for i2 i1 1 to 8 for i3 i2 1 to 8 for i4 i3 1 to 8 for i5 i4 1 to 8 for i6 i5 1 to 8 s i1 i2 i3 i4 i5 i6if in...