Convertir le code de couleur rgb en directx

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 514 fois - Téléchargée 47 fois

Contenu du snippet

Un aspect assez technique de DirectX mais utile, les couleurs RGB ne correspondant pas aux couleurs DX.

Source / Exemple :


Public Function RGB2DX(R As Long, G As Long, B As Long) As Long
    'Converti le code de couleur RGB en code de couleur DX
    RGB2DX = DX.CreateColorRGBA(CSng((1 / 255) * R), CSng((1 / 255) * G), CSng((1 / 255) * B), 0)
End Function

Conclusion :


Voila, c' est assez simple à utilisé, par ex.:
Backbuffer.SetForeColor RGB2DX (100, 150, 90)

L' objet DX, doit etre définit avant comme objet DirectX7

A voir également

Ajouter un commentaire

Commentaires

Messages postés
340
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
25 août 2007

CreateColorRGBA ne fonctionne plus sous Vista apparament il faut se coder une fonction equivalente pour remplacer celle ci
pas bien grave mais c'est chiant pour tester les sources dx7 sous vista il faut remplacer par:

Public Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef dest As Any, ByRef src As Any, ByVal dwLen As Long)

'Entrée : un Long RGB pour windows
'sortie : un long BGR pour dx

Public Function LongToDxColor(ByVal pColor As Long) As Long
Dim pRGBentry As RGBColor
Dim s As Byte
CopyMemory pRGBentry, pColor, 3
'swap windowscolor to directxcolors inverse red and blue values
s = pRGBentry.Red
pRGBentry.Red = pRGBentry.Blue
pRGBentry.Blue = s
LongToDxColor = RGB(pRGBentry.Red, pRGBentry.Green, pRGBentry.Blue)

End Function

'pour ton exemple :

ck.low =LongToDxColor(rgb(110,80,52))
ck.Hight =LongToDxColor(rgb(110,80,52))
Messages postés
24
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
29 juin 2004

Chez moi ça ne marche pas :-(
Ma couleur : 110 80 52 donc je mets ck.low rgb2dx(110,80,52) et ck.high rgb2dx(110,80,52) mais le brun reste brun...
J'ai bien mis SurfacePersos.SetColorKey DDCKEY_SRCBLT, CK et quand je blitte je mets encore BackBuffer.Blt DDRect(100, 100, 200, 200), SurfacePersos, DDRect(0, 0, 0, 0), DDBLT_WAIT Or DDBLT_KEYSRC. Mais rien ne se passe...

Help ?!
Messages postés
7
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
16 août 2002

Bien entendu sous directx8 la fonction est deja declarer

D3DColorXRGB(r As Integer, g As Integer, b As Integer) As Long

chao ;)
Messages postés
363
Date d'inscription
jeudi 20 décembre 2001
Statut
Membre
Dernière intervention
25 août 2003

ben voila, j'en apprend encore un peu sur directx !!! merci !! 8/10

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.