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 | + | Dim r, g, b, a As Byte |
− | <FONT Color=gray>' ''Il valore del colore di formato RGBA va considerato secondo | + | <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 | + | 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 | + | 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 | + | 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 | + | 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 !