Differenze tra le versioni di "Convertire il valore di un colore in RGBA"

Da Gambas-it.org - Wikipedia.
Riga 2: Riga 2:
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
    
 
    
   Dim r, g, b, a As Integer
+
   Dim r, g, b, a As Byte
 
    
 
    
  <FONT Color=gray>' ''Il valore del colore di formato RGBA va considerato secondo lo standard di Gambas come segue: <FONT Color=black>alfa</font>, <FONT Color=red>rosso</font>, <FONT Color=green>verde</font>, <FONT Color=blue>blu</font>.''</font>
+
  <FONT Color=gray>' ''Il valore del colore di formato RGBA va considerato secondo Gambas come segue: <FONT Color=black>alfa</font>, <FONT Color=red>rosso</font>, <FONT Color=green>verde</font>, <FONT Color=blue>blu</font>.''</font>
 
   da_colore_a_rgba(&FF<FONT Color=red>00</font><FONT Color=green>FF</font><FONT Color=blue>00</font>&, VarPtr(r), VarPtr(g), VarPtr(b), VarPtr(a))
 
   da_colore_a_rgba(&FF<FONT Color=red>00</font><FONT Color=green>FF</font><FONT Color=blue>00</font>&, VarPtr(r), VarPtr(g), VarPtr(b), VarPtr(a))
 
      
 
      
Riga 20: Riga 20:
 
    
 
    
 
   st = Memory blu For Write
 
   st = Memory blu For Write
   Write #st, colore And &FF As Integer
+
   Write #st, colore And &FF As Byte
 
   st.Close
 
   st.Close
 
    
 
    
 
   st = Memory verde For Write
 
   st = Memory verde For Write
   Write #st, (colore \ CInt(2 ^ 8)) And &FF As Integer
+
   Write #st, (colore \ CInt(2 ^ 8)) And &FF As Byte
 
   st.Close
 
   st.Close
 
    
 
    
 
   st = Memory rosso For Write
 
   st = Memory rosso For Write
   Write #st, (colore \ CInt(2 ^ 16)) And &FF As Integer
+
   Write #st, (colore \ CInt(2 ^ 16)) And &FF As Byte
 
   st.Close
 
   st.Close
 
    
 
    
 
   st = Memory alfa For Write
 
   st = Memory alfa For Write
   Write #st, (colore \ CInt(2 ^ 24)) And &FF As Integer
+
   Write #st, (colore \ CInt(2 ^ 24)) And &FF As Byte
 
   st.Close
 
   st.Close
 
    
 
    

Versione delle 10:29, 4 mag 2017

Per convertire nel formato standard RGBA il valore di un colore, contenente anche il canale alfa attinente alla trasparenza, come stabilito in Gambas [Nota 1], possiamo adottare il calcolo contenuto nel seguente codice:

Public Sub Main()
 
 Dim r, g, b, a As Byte
 
' Il valore del colore di formato RGBA va considerato secondo Gambas come segue: alfa, rosso, verde, blu.
  da_colore_a_rgba(&FF00FF00&, VarPtr(r), VarPtr(g), VarPtr(b), VarPtr(a))
   
  Print "Rosso: "; r
  Print "Verde: "; g
  Print "Blu:   "; b
  Print "Alfa:  "; a
  
End


Private Function da_colore_a_rgba(colore As Long, rosso As Pointer, verde As Pointer, blu As Pointer, alfa As Pointer)
 
 Dim st As Stream
 
  st = Memory blu For Write
  Write #st, colore And &FF As Byte
  st.Close
  
  st = Memory verde For Write
  Write #st, (colore \ CInt(2 ^ 8)) And &FF As Byte
  st.Close
  
  st = Memory rosso For Write
  Write #st, (colore \ CInt(2 ^ 16)) And &FF As Byte
  st.Close
  
  st = Memory alfa For Write
  Write #st, (colore \ CInt(2 ^ 24)) And &FF As Byte
  st.Close
  
End


Note

[1] ATTENZIONE ! In Gambas il colore di formato RGBA è così composto:

A R G B

e il valore del canale Alfa della piena opacità é uguale a zero, mentre il valore della piena trasparenza è 255 !