Obtenir le r, le g et le b d'une ole_color

Résolu
unrealgun Messages postés 87 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 4 mars 2008 - 18 mars 2005 à 22:04
unrealgun Messages postés 87 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 4 mars 2008 - 19 mars 2005 à 12:59
Bonjour,
voilà le problème : j'aimerais savoir comment je pourrais avoir le niveau de couleur Red Green et Blue à partir d'une ole_color.
En clair, j'aimerais avoir le contraire de la fonction RGB(r,g,b)

Merci d'avance ;)

The DAMIRATOR

6 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 mars 2005 à 22:31
Private
Declare
Function TranslateColor
Lib
"olepro32.dll"
Alias
"OleTranslateColor" (
ByVal clr
As OLE_COLOR,
ByVal palet
As
Long, col
As
Long)
As
Long


Private
Sub Form_Load()



Dim RealColor
As
Long



'Convert OLE colors to RGB colors


TranslateColor Me.BackColor, 0, RealColor



'show the result


MsgBox
"The backcolor of this form is R=" +
CStr(RealColor
And &HFF&) +
" G=" +
CStr((RealColor
And &HFF00&) / 2 ^ 8) +
" B=" +
CStr((RealColor
And &HFF0000) / 2 ^ 16)


End
Sub

Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 mars 2005 à 23:36
'une autre méthode

Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Sub Command2_Click()
Dim couleur As Long
Dim C(2) As Byte
Dim index As Byte

index = Me.BackColor And 255
couleur = GetSysColor(index)
CopyMemory C(0), couleur, 3
MsgBox "Rouge= " & C(0)
MsgBox "vert= " & C(1)
MsgBox "Bleu= " & C(2)
End Sub

Daniel
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 mars 2005 à 22:19
Il y a ce qu'il faut dans ma DLL:
http://www.vbfrance.com/code.aspx?id=18494

sinon faudra faire par multiplication et isoler les bits avec un And 0xFF.

ciao...
BruNews, MVP VC++
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
18 mars 2005 à 23:16
Tout juste Daniel mais dans ce cas, on recopie in extenso. Il manque la ligne :


'Example by Bertrand DUMAS-PILHOU ([mailto:bdumas@eurocortex.fr bdumas@eurocortex.fr])

Loup Gris
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 mars 2005 à 23:18
exact.

Daniel
0
unrealgun Messages postés 87 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 4 mars 2008
19 mars 2005 à 12:59
Merci à tous :), je fonce l'essayer !

The DAMIRATOR
0
Rejoignez-nous