Accueil > > > 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
Description
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 :)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|