Color chooser - un petit usercontrol pour choisir une couleur rvb

Soyez le premier à donner votre avis sur cette source.

Vue 3 593 fois - Téléchargée 372 fois

Description

C'est tout bete et pas super rapide, mais ça peut etre utile :
allez voir l'apercu qui parle de lui-meme (enfin j'espère)
en gros :
on a un dégradé en 2 dimensions des couleurs rouge et verte, en fonction d'une couleur bleue qu'on choisit à droite, dans un sélecteur dégradé du bleu au noir...
on peut aussi choisir les couleurs individuellement numériquement ou visuellement

Source / Exemple :


Sub Colorer()
'voilà deux méthodes très lentes :
'    For i = 0 To 255
'        For j = 0 To 255
'            'très lent :
'            SetPixel chCoul.hdc, i, j, RVB(i, j, Bleu)
'            'hyper lent : (cad encore plus lent que tres lent)
'            'chCoul.PSet (i, j), RVB(i, j, Bleu)
'        Next j
'    Next i

'et la méthode rapide :
'un peu plus compliquée...

    Dim gRect      As GRADIENT_RECT
    Dim triVert(1) As TRIVERTEX 'deux trivertex
    
    Dim noLigne As Long
    
    For noLigne = 0 To chCoul.Height
        
        'rouge=noLigne
        'Vert = dégradé dans la ligne
        'bleu = 3eme dimension
        
        'trivert 2 : couleur et prosition
        With triVert(0)
            .X = 0
            .Y = noLigne
            .Alpha = 0&
            .Red = LongToUShort(noLigne * 256#)
            .Green = LongToUShort(0)
            .Blue = LongToUShort(Bleu * 256#)
        End With
        
        'trivert 1 : couleur et position
        With triVert(1)
            .X = chCoul.Width
            .Y = noLigne + 1
            .Alpha = 0&
            .Red = LongToUShort(noLigne * 256#)
            .Green = LongToUShort(255# * 256#)
            .Blue = LongToUShort(Bleu * 256#)
        End With
    
        'définit l'index de triVert correspondant :
        gRect.UpperLeft = 0 'au coin supérieur gauche
        gRect.LowerRight = 1 'au coin inférieur droit
        
        GradientFillRect chCoul.hdc, triVert(0), 2, gRect, 1, 0
    
    Next noLigne
    
    curCoul.ZOrder 0
    curCoul.Visible = True
    curCoul.Move curCoul.Left
End Sub

Conclusion :


Bon, alors pour ceux qui ont vu le prog à sa première version, il y a beaucoup de changements... et le problème de la vitesse est réglé (merci Renfield)

bonne prog !

Helkanen

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
54 -
j'ai fais une source qui ressemble un peu a ca.....
si tu veux y jeter un oeil...
cs_olid
Messages postés
296
Date d'inscription
lundi 2 septembre 2002
Statut
Membre
Dernière intervention
28 janvier 2008
-
Zest un bon debut, mais cest trop lent pour etre utilisable actuellement...

Commence par ré-écrire ton remplissage via les API (fonctions GetPixel et PutPixel), puis fait une barre de defilement colorée (plus dur) pour choisir la gamme comme dans Photoshop ;op

Bonne continuation
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
54 -
olid, je vois que tu es un connaisseur.

peut-etre pourrais tu jeter un oeil sur ma source

http://www.vbfrance.com/code.aspx?ID=6564
cs_olid
Messages postés
296
Date d'inscription
lundi 2 septembre 2002
Statut
Membre
Dernière intervention
28 janvier 2008
-
jen avais l'intention...note que là, je regarde tes autres sources ;o)

Sinon, une de mes sources sur les images transparentes et/ou répétitives utilisent les API que jai cité... Za devrait aider Helkanen :op
Helkanen
Messages postés
54
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
9 juin 2004
-
cool... continuez les remarques... merci bien
je vais voir ce que je peux faire... mais, euh... (désolé si je vous parait minable) elle se trouve où l'api avec putpixel ? je trouve bien getpixel, mais ça a pas vraiment l'air d'etre ça...

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.