Differenze tra le versioni di "Convertire il valore di un colore da RGB in HSV"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per convertire il valore di un colore da formato RGB in formato HSV, è possibile utilizzare il seguente codice: '''Public''' Sub Main() Dim rgb As Integer[] Dim h, s,...") |
|||
Riga 1: | Riga 1: | ||
Per convertire il valore di un colore da formato RGB in formato HSV, è possibile utilizzare il seguente codice: | Per convertire il valore di un colore da formato RGB in formato HSV, è possibile utilizzare il seguente codice: | ||
− | + | Public Sub Main() | |
− | |||
− | |||
− | |||
+ | Dim rgb As Integer[] | ||
+ | Dim h, s, v As Integer | ||
+ | |||
rgb = [0, 255, 255] | rgb = [0, 255, 255] | ||
Riga 13: | Riga 13: | ||
Print "value = "; v | Print "value = "; v | ||
− | + | End | |
− | + | Private Function Da_rgb_a_hsv(colore As Integer[], hp As Pointer, sp As Pointer, vp As Pointer) | |
− | |||
− | |||
− | |||
+ | Dim k, x, f, i, j As Integer | ||
+ | Dim stH, stS, stV As Stream | ||
+ | |||
x = colore[0] | x = colore[0] | ||
Riga 54: | Riga 54: | ||
stV.Close | stV.Close | ||
− | + | End |
Versione attuale delle 16:46, 25 giu 2024
Per convertire il valore di un colore da formato RGB in formato HSV, è possibile utilizzare il seguente codice:
Public Sub Main() Dim rgb As Integer[] Dim h, s, v As Integer rgb = [0, 255, 255] Da_rgb_a_hsv(rgb, VarPtr(h), VarPtr(s), VarPtr(v)) Print "hue = "; h Print "saturation = "; s Print "value = "; v End Private Function Da_rgb_a_hsv(colore As Integer[], hp As Pointer, sp As Pointer, vp As Pointer) Dim k, x, f, i, j As Integer Dim stH, stS, stV As Stream x = colore[0] If colore[1] < x Then x = colore[1] If colore[2] < x Then x = colore[2] k = colore[0] If colore[1] > k Then k = colore[1] If colore[2] > k Then k = colore[2] stH = Memory hp For Write stS = Memory sp For Write stV = Memory vp For Write If k = x Then Write #stH, 0 As Integer Write #stS, 0 As Integer Write #stV, k As Integer Else f = If(colore[0] = x, colore[1] - colore[2], If(colore[1] = x, colore[2] - colore[0], colore[0] - colore[1])) i = If(colore[0] = x, 3, If(colore[1] = x, 5, 1)) j = CInt((i - CFloat(f) / (k - x)) * 60) If j = 360 Then Write #stH, 0 As Integer Else Write #stH, j As Integer Endif Write #stS, ((k - x) * 255) / k As Integer Write #stV, k As Integer Endif stH.Close stS.Close stV.Close End