1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
| Public Class Form1
' Convertir une couleur VB.Net en une couleur en tans que nombre
Private Function CouleurVersNombre(ByVal Couleur As Color) As Double
Return System.Drawing.ColorTranslator.ToWin32(Couleur)
End Function
' Convertir une couleur en tans que nombre en une couleur VB.Net
Private Function NombreVersCouleur(ByVal Nombre As Double) As Color
If Nombre < 0 Then
Nombre = 0
End If
If Nombre > 256 ^ 3 Then
Nombre = 256 ^ 3
End If
Return ColorTranslator.FromWin32(Nombre)
End Function
' Renvoie la valeur de la couleur 24-bit correspondant aux valeurs Rouge, Vert et Bleu.
' Chaque composante 'Rouge', 'Verte', 'Bleue' est une valeur comprise entre 0 et 255
Private Function RGB(ByVal Rouge As Double, ByVal Vert As Double, ByVal Bleu As Double) As Double
If Rouge < 0 Then
Rouge = 0
End If
If Vert > 255 Then
Rouge = 255
End If
If Vert < 0 Then
Vert = 0
End If
If Vert > 255 Then
Vert = 255
End If
If Bleu < 0 Then
Bleu = 0
End If
If Bleu > 255 Then
Bleu = 255
End If
Return Rouge + (Vert * 256) + (Bleu * 65536)
End Function
' Renvoie la valeur de la couleur 32-bit correspondant aux valeurs Rouge, Vert, Bleu et Alpha.
' Chaque composante 'Rouge', 'Verte', 'Bleue', 'Alpha' est une valeur comprise entre 0 et 255
Private Function RGBA(ByVal Rouge As Double, ByVal Vert As Double, ByVal Bleu As Double, ByVal Alpha As Double) As Int64
If Rouge < 0 Then
Rouge = 0
End If
If Vert > 255 Then
Rouge = 255
End If
If Vert < 0 Then
Vert = 0
End If
If Vert > 255 Then
Vert = 255
End If
If Bleu < 0 Then
Bleu = 0
End If
If Bleu > 255 Then
Bleu = 255
End If
If Alpha < 0 Then
Alpha = 0
End If
If Alpha > 255 Then
Alpha = 255
End If
Return Rouge + (Vert * 256) + (Bleu * 65536) + (Alpha * 16777216)
End Function
' Renvoie la valeur de la composante rouge d'une couleur RVB 24-bit.
' La valeur retournée est comprise entre 0 et 255.
Private Function Rouge(ByVal Nombre As Double) As Double
If Nombre < 0 Then
Nombre = 0
End If
If Nombre > 256 ^ 4 Then
Nombre = 256 ^ 4
End If
Return 255 And Nombre
End Function
' Renvoie la valeur de la composante vert d'une couleur RVB 24-bit.
' La valeur retournée est comprise entre 0 et 255.
Private Function Vert(ByVal Nombre As Double) As Double
If Nombre < 0 Then
Nombre = 0
End If
If Nombre > 256 ^ 4 Then
Nombre = 256 ^ 4
End If
Return (65280 And Nombre) \ 256
End Function
' Renvoie la valeur de la composante bleu d'une couleur RVB 24-bit.
' La valeur retournée est comprise entre 0 et 255.
Private Function Bleu(ByVal Nombre As Double) As Double
If Nombre < 0 Then
Nombre = 0
End If
If Nombre > 256 ^ 4 Then
Nombre = 256 ^ 4
End If
Return (16711680 And Nombre) \ 65536
End Function
' Renvoie la valeur de la composante alpha d'une couleur RVBA 32-bit.
' La valeur retournée est comprise entre 0 et 255.
Private Function Alpha(ByVal Nombre As Double) As Double
If Nombre < 0 Then
Nombre = 0
End If
If Nombre > 256 ^ 4 Then
Nombre = 256 ^ 4
End If
Return (4278190080 And Nombre) \ 16777216
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Contient une couleur naturel
Dim CouleurNaturel As Color = Color.DarkBlue
' Renvoie la valeur de la couleur 24-bit correspondant aux valeurs Rouge, Vert et Bleu
Dim CouleurNombre24Bits As Double = RGB(251, 252, 253)
' Renvoie la valeur de la couleur 32-bit correspondant aux valeurs Rouge, Vert, Bleu et Alpha
Dim CouleurNombre32Bits As Double = RGBA(147, 151, 155, 185)
' Renvoie la composante rouge de la couleur
Dim CouleurRouge24Bits As Double = Rouge(CouleurNombre24Bits)
' Renvoie la composante vert de la couleur
Dim CouleurVert24Bits As Double = Vert(CouleurNombre24Bits)
' Renvoie la composante bleu de la couleur
Dim CouleurBleu24Bits As Double = Bleu(CouleurNombre24Bits)
' Renvoie la composante rouge de la couleur
Dim CouleurRouge32Bits As Double = Rouge(CouleurNombre32Bits)
' Renvoie la composante vert de la couleur
Dim CouleurVert32Bits As Double = Vert(CouleurNombre32Bits)
' Renvoie la composante bleu de la couleur
Dim CouleurBleu32Bits As Double = Bleu(CouleurNombre32Bits)
' Renvoie la composante alpha de la couleur
Dim CouleurAlpha32Bits As Double = Alpha(CouleurNombre32Bits)
' Ici la couleur naturel sera toujours en 24 bits car il n'y a pas de trensparence dans les couleur VB.Net !
Dim ConvertionCouleurNaturelEnNombre As Double = CouleurVersNombre(CouleurNaturel)
' Attention, ici on ne peut convertir qu'une couleur 24 bit (RGB) et non 32 bits (RGBA) !
Dim ConvertionCouleurNombreEnCouleurNaturel As Color = NombreVersCouleur(ConvertionCouleurNaturelEnNombre)
Dim Résultat1 As String = "Couleur en nombre 24 bits = " & CouleurNombre24Bits & vbCr & vbCr & "Composante rouge = " & CouleurRouge24Bits & vbCr & "Composante verte = " & CouleurVert24Bits & vbCr & "Composante bleu = " & CouleurBleu24Bits & vbCr & vbCr & vbCr
Dim Résultat2 As String = "Couleur en nombre 32 bits = " & CouleurNombre32Bits & vbCr & vbCr & "Composante rouge = " & CouleurRouge32Bits & vbCr & "Composante verte = " & CouleurVert32Bits & vbCr & "Composante bleu = " & CouleurBleu32Bits & vbCr & "Composante alpha = " & CouleurAlpha32Bits & vbCr & vbCr & vbCr
Dim Résultat3 As String = "Couleur naturel = " & CouleurNaturel.ToString & vbCr & vbCr
Dim Résultat4 As String = "Convertion couleur naturel -> nombre = " & ConvertionCouleurNaturelEnNombre.ToString & vbCr
Dim Résultat5 As String = "Convertion couleur nombre -> couleur naturel = " & ConvertionCouleurNombreEnCouleurNaturel.ToString
MsgBox(Résultat1 & Résultat2 & Résultat3 & Résultat4 & Résultat5)
End Sub
End Class |
Partager