Desaturare un colore

Da Gambas-it.org - Wikipedia.

Per desaturare un colore, ossia per ingrigirlo, può essere adottato il seguente codice:

Public Sub Main()
 
 Dim r, g, b, a As Integer
 Dim colore As Long
 
' Desaturiamo ad esempio il colore "giallo":
  r = 255
  g = 255
  b = 0
  a = 255
  
  colore = (r * 11 + g * 16 + b * 5) / 32
  Print colore
  r = colore
  g = colore
  b = colore
  
  colore = CLong(b Or (g * CInt(2 ^ 8)) Or (r * CInt(2 ^ 16)) Or (a * CInt(2 ^ 24)))
  
  Print Val("&" & Hex(colore, 6) & "&"), Hex(colore, 6)
  
End