FORM IRRÉGULIÈRE ET ANIMÉE

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 9 mai 2004 à 07:35
cs_Tas Messages postés 7 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 14 septembre 2007 - 14 sept. 2007 à 08:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22642-form-irreguliere-et-animee

cs_Tas Messages postés 7 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 14 septembre 2007
14 sept. 2007 à 08:34
Salut !
Génial tout ça. Comment faire pour récupérer l'icone de l'appli dans la barre Windows car une fois la forme découpée il n'y a plus de nom d'appli !
Merci à tous.
-- Tas --
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
10 mai 2004 à 20:45
ymerej, pour une découpe simple garde
"Private Sub Form_Load"
et
"Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)" pour deplacement !!
voili et merci ..
ryl....
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
10 mai 2004 à 16:11
ok Darksidious je vé faire avec !
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
10 mai 2004 à 15:20
Pas mal la methode pr deplacer la fenetre !!!
Avant j'utilisais une methode artisanale et ca ramé !
Maintenant c nickel !
Désolé pr le double post d'avant !
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 mai 2004 à 15:18
ymerej : va voir ma source nommée Découpage De feuille rapide : il y a une fonction de découpage plus rapide que celle utilisée dans cette source.

DarK Sidious
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
10 mai 2004 à 15:14
Pourré t'on me donner le code exact qui permet de decouper automatiquement une image dans une fenetre svp ca seré cool !
Rien que çà pas d'animation rien, juste pr decouper une image au moment ou on créer la fenetre afin qu'elle prenne la forme de l'image.
@+ Merci d'avance
Sinon rylryl bravo pr ta source c un super boulot le resultat est super !
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
10 mai 2004 à 15:14
Pourré t'on me donner le code exact qui permet de decouper automatiquement une image dans une fenetre svp ca seré cool !
Rien que çà pas d'animation rien, juste pr decouper une image au moment ou on créer la fenetre afin qu'elle prenne la forme de l'image.
@+ Merci d'avance
Sinon rylryl bravo pr ta source c un super boulot le resultat est super !
linkinpar236737 Messages postés 161 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 7 mai 2007
10 mai 2004 à 07:19
Pas mal du tout, très joli.
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
10 mai 2004 à 07:12
The Hacker : dans ma source, je découpe selon un texte, mais elle s'applique aussi rapidement sur une image. J'ai pris du texte pour m'éviter de grossir le zip avec une image ! Ta deuxième méthode est très bien aussi mais elle est limitée à Windows 2000/XP où l'API SetLayeredWindowAttributes est définie, et elle est donc incompatibles avec les autres versions de Windows, ce qui la rend beaucoup moins pratique pour un programme qui doit être déployé par exemple.

DarK Sidious
cs_TheHacker Messages postés 442 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 19 octobre 2005
9 mai 2004 à 23:13
oui oui j'ai regardé, j'sais que cette source decoupe une image mais j'ai vu dans ton exmeple qu'elle faisait un texte "SALUT" sinon c une variante ca peut etre utile.

sinon j'ai encore une autre méthode qui consiste a utiliser les APIs de transparence d'un form, ya un parametres qui permet d'enlever une couleur du form, i lsuffit donc de mettre l'image sur un fond vert par exemple et d'utilise rl'API pour enelver le vert du form, c tres rapide et efficace. voici le boup de code:

***********MODULE*********************
Public Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function SetLayeredWindowAttributes Lib "User32" (ByVal hWnd As Long, ByVal crey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long


Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000
Public Const WS_EX_TRANSPARENT = &H20&
Public Const LWA_ALPHA = &H2&
***********MODULE*********************

'********************FORM
Dim lOldStyle As Long
Dim crk As Long

crk = GetPixel(Me.hdc, 0, 0)
Dim bTrans As Byte ' The level of transparency (0 - 255)

lOldStyle = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
'cet API determine si on peut clicker sur la form ou non....
SetWindowLong Me.hWnd, GWL_EXSTYLE, lOldStyle Or WS_EX_LAYERED
'SetWindowLong Me.hwnd, GWL_EXSTYLE, lOldStyle Or WS_EX_LAYERED Or WS_EX_TRANSPARENT
SetLayeredWindowAttributes Me.hWnd, crk, 255, &H3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
9 mai 2004 à 16:26
TheHacker : as-tu regarder la source ? Car il ne découpe pas du texte mais une image ! ;-)

Sinon, tu as raison, ta méthode est très bien pour découper du texte !

DarK Sidious
cs_TheHacker Messages postés 442 Date d'inscription samedi 23 novembre 2002 Statut Membre Dernière intervention 19 octobre 2005
9 mai 2004 à 14:03
voici une autre facon de découper un texte...

Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Private Sub Form_Load()
Dim hRgn As Long
Me.FontName = "Times New Roman"
Me.FontSize = 72
Me.BackColor = vbRed
BeginPath Me.hdc
Me.Print "SALUT !"
EndPath Me.hdc
hRgn = PathToRegion(Me.hdc)
SetWindowRgn Me.hWnd, hRgn, True
DeleteObject hRgn
End Sub
rylryl Messages postés 311 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 15 décembre 2006 1
9 mai 2004 à 14:02
Merci Mr DARKSIDIOUS ,vais voir ça et aprés avoir fini un autre projet en cours ferais sans doute une MAJ,encore merci pour tes conseils...
ryl...
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
9 mai 2004 à 07:35
Même si la découpe de la feuille ne prend pas trop de temps, tu aurais pu faire encore bien plus rapide en utilisant ls fonction GetDIBIts plutôt que la fonction GetPixel ! Voir ma source nommée D&coupage de feuille rapide pour t'en convaincre ;-)

Sinon, c'est pas mal, c'est sympa et original comme anim ;-)

8/10

DarK Sidious
Rejoignez-nous