begin process at 2012 02 17 03:13:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CLASSE JOUANT AVEC LA TRANSPARENCE ENTRE 2 CONTROLES ET UN DEGRADER POUR FAIRE DES MENU OU DES BOUTONS

CLASSE JOUANT AVEC LA TRANSPARENCE ENTRE 2 CONTROLES ET UN DEGRADER POUR FAIRE DES MENU OU DES BOUTONS


 Information sur la source

Note :
9,4 / 10 - par 10 personnes
9,40 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Niveau :Débutant Date de création :09/02/2005 Vu / téléchargé :4 681 / 854

Auteur : NoMitsu

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
En faite, ce code est une classe que j’ai crée pour réaliser le menu de mon TPE (voir image) il a ete coder un peu sur mesure et a l’arrache donc il y aura surement des mise a jour pour ajouter des fonction et simplifier encore son utilisation.

On y apprend a cree un degrader a faire fusionner 2 images le tous en se servant des API.

API utiliser :
    CreateCompatibleBitmap
    CreateCompatibleDC
    GetDC
    DeleteDC
    DeleteObject
    
    AlphaBlend
    RtlMoveMemory
        
    GradientFill
    SetPixel
    StretchBlt

Pour mieux se rendre conte de se a quoi sert le code regarder l’image (le menu et la barre de titre sont cree grace a la classe)

Source

  • 'Extrait : Fonction principale
  • Private Function Fusion(vObj As Object)
  • Dim BF As BLENDFUNCTION, lBF As Long
  • Dim i As Long
  • For i = 0 To vObj.ScaleWidth
  • BF.SourceConstantAlpha = 255 - Int(255 / vObj.ScaleWidth * i)
  • RtlMoveMemory lBF, BF, 4
  • AlphaBlend vObj.hdc, i, 0, 1, vObj.ScaleHeight, vDCDegrader, 0, 0, 1, vObj.ScaleHeight, lBF
  • Next i
  • End Function
  • Private Function Make_Degrader(vObj As Object, vColor1 As Long, vColor2 As Long) As Boolean
  • Dim R As Byte, G As Byte, B As Byte
  • Dim gRect As GRADIENT_RECT
  • Dim vVertex(1) As TRIVERTEX
  • 'BMP degrader
  • vDCDegrader = CreateCompatibleDC(GetDC(0))
  • vBMPDegrader = CreateCompatibleBitmap(GetDC(0), 1, vObj.ScaleHeight)
  • Call SelectObject(vDCDegrader, vBMPDegrader)
  • gRect.UpperLeft = 0
  • gRect.LowerRight = 1
  • Call GetRGB(vColor1, R, G, B)
  • vVertex(0).X = 0
  • vVertex(0).Y = 0
  • vVertex(0).Red = "&H" & Hex(R / 16 * 256 * 16)
  • vVertex(0).Green = "&H" & Hex(G / 16 * 256 * 16)
  • vVertex(0).Blue = "&H" & Hex(B / 16 * 256 * 16)
  • vVertex(0).Alpha = 0
  • Call GetRGB(vColor2, R, G, B)
  • vVertex(1).X = 1
  • vVertex(1).Y = vObj.ScaleHeight
  • vVertex(1).Red = "&H" & Hex(R / 16 * 256 * 16)
  • vVertex(1).Green = "&H" & Hex(G / 16 * 256 * 16)
  • vVertex(1).Blue = "&H" & Hex(B / 16 * 256 * 16)
  • vVertex(1).Alpha = 0
  • Make_Degrader = GradientFill(vDCDegrader, vVertex(0), 2, gRect, 1, GRADIENT_FILL_RECT_V)
  • If vStyle = 1 Then
  • Call SetPixel(vDCDegrader, 0, 0, vStyleColor)
  • Call SetPixel(vDCDegrader, 0, vObj.ScaleHeight - 1, vStyleColor)
  • End If
  • End Function
'Extrait : Fonction principale

Private Function Fusion(vObj As Object)
 Dim BF As BLENDFUNCTION, lBF As Long
 Dim i As Long
       
    For i = 0 To vObj.ScaleWidth
        BF.SourceConstantAlpha = 255 - Int(255 / vObj.ScaleWidth * i)
        RtlMoveMemory lBF, BF, 4
        
        AlphaBlend vObj.hdc, i, 0, 1, vObj.ScaleHeight, vDCDegrader, 0, 0, 1, vObj.ScaleHeight, lBF
    Next i
End Function

Private Function Make_Degrader(vObj As Object, vColor1 As Long, vColor2 As Long) As Boolean
 Dim R As Byte, G As Byte, B As Byte
 
 Dim gRect      As GRADIENT_RECT
 Dim vVertex(1) As TRIVERTEX
 
    'BMP degrader
    vDCDegrader = CreateCompatibleDC(GetDC(0))
    vBMPDegrader = CreateCompatibleBitmap(GetDC(0), 1, vObj.ScaleHeight)
    Call SelectObject(vDCDegrader, vBMPDegrader)
 
    gRect.UpperLeft = 0
    gRect.LowerRight = 1
    
    Call GetRGB(vColor1, R, G, B)
                
    vVertex(0).X = 0
    vVertex(0).Y = 0
    vVertex(0).Red = "&H" & Hex(R / 16 * 256 * 16)
    vVertex(0).Green = "&H" & Hex(G / 16 * 256 * 16)
    vVertex(0).Blue = "&H" & Hex(B / 16 * 256 * 16)
    vVertex(0).Alpha = 0
                
    Call GetRGB(vColor2, R, G, B)
                
    vVertex(1).X = 1
    vVertex(1).Y = vObj.ScaleHeight
    vVertex(1).Red = "&H" & Hex(R / 16 * 256 * 16)
    vVertex(1).Green = "&H" & Hex(G / 16 * 256 * 16)
    vVertex(1).Blue = "&H" & Hex(B / 16 * 256 * 16)
    vVertex(1).Alpha = 0
    
    Make_Degrader = GradientFill(vDCDegrader, vVertex(0), 2, gRect, 1, GRADIENT_FILL_RECT_V)
    
    If vStyle = 1 Then
        Call SetPixel(vDCDegrader, 0, 0, vStyleColor)
        Call SetPixel(vDCDegrader, 0, vObj.ScaleHeight - 1, vStyleColor)
    End If
End Function

 Conclusion

Il reste encore beaucoup a faire pour la rendre veritablement interessante, notament en remplacent la classe par un controleuser mais mon principale probablement est de recuperer l’image de fond de contrôle  sur lequel est le contrôle est (ceux qui liron le code me comprendrons)  donc si quelqu'un a une idee je suis ouvert (mes principale recherche pour la recuperer se sont tourner sur le DC mais du contrôle mais je n’est jamais reussi a recuperer l’image)

L’autre souci est qu’il est impossible de superposer plusieurs contrôle.

Voilà toute aide est la bien venu (remarque constructive et encouragement aussi :)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture MINWINDOW (GESTIONNAIRE DE FENETRE)
Source avec Zip Source avec une capture PATCHER EXPRESS (GÉNÉRATEUR DE PATCH)
Source avec Zip Source avec une capture CHANGER LE LOOK DE VOS APPLICATION FACILEMENT AVEC EASY SKIN
Source avec Zip Source avec une capture COLORATION SYNTAXIQUE PAR RICHETEXTEBOX ET API (TRÈS RAPIDE)

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) VB10 - CRÉER VOS PROPRES CALQUES SUR UNE IMAGE par Duke49
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN GIF ANIMÉ par Le Pivert
Source avec une capture GRAPH PHP COURBE DE CHARGE par s.defaye
Source avec Zip Source avec une capture BOULE DE CRISTAL par BLUEBIBUBBLE
VB6 - DÉPLACEMENT D'UN CONTRÔLE SUR UN SEGMENT DE DROITE DÉL... par ucfoutu

Commentaires et avis

Commentaire de EBArtSoft le 09/02/2005 22:50:34 administrateur CS

Sympa...

Commentaire de DARKSIDIOUS le 10/02/2005 07:00:26 administrateur CS

Très bien, ca donne un bon effet, le mouse-over est bien géré, bravo !

9/10 pour l'originalité, et pour l'optimisation (enfin une source graphique qui n'utilise pas les PSet ou Point de VB !).

DarK Sidious

Commentaire de marm0tte le 10/02/2005 08:17:22

Bravo, très réussi comme effet, j'adore le résultat :D

9/10 car je n'est pas encore vu une source comme ceci sur le site et qu'elle marche très bien.

Commentaire de bidoch78 le 10/02/2005 10:16:50

Tres jolie, ca fait plaisir.

Commentaire de Urgo le 10/02/2005 13:57:18

Y'a de l'idée, c'est très bien!

Commentaire de MadM@tt le 10/02/2005 20:25:48

Bravo c'est très joli le résultat !

Commentaire de ScSami le 11/02/2005 20:51:53

"Cool", très bon effet...

10/10

Commentaire de Neo.balastik le 12/02/2005 19:22:37

Très très sympa l'effet.
Et le codage soigné...
Un bon 9 !

Commentaire de NoMitsu le 14/02/2005 19:27:13

Merci a tous, vos commentaires me font tres plaisir.
Cependant pour pouvoir ameliorer ma classe j’aurais besoin de recuperer le DC du contrôle parent pour recuperer l’image qui est en dessous et je ne trouve pas d’api pour si quelqu’un a une idee je suis preneur. J’ai poster une question dans le forum, il y a deja eu des tentative de reponce mais aucune ne convient, si vous voulez m’aidee c’est par ici
http://www.vbfrance.com/forum.v2.aspx?ID=391497

Commentaire de MadM@tt le 15/02/2005 00:34:23

Zut j'ai justement croisé une source comme ça aujourd'hui il faudrait que je la retrouve.
C'était pas une source de toi d'ailleurs DarkSidious ?
(avec la transparence sous win9x)

Commentaire de Flocreate le 04/08/2009 15:50:33

salut, une bonne source et compréhensible à souhait.
a quant le contrôle activX cbMenu ? et cbBouton ?
Un grand bravo

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,934 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales