begin process at 2010 02 10 01:17:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaire

 > FORM GRAPHIQUE AUX BORDURES IRREGULIERES STYLE WIDGET

FORM GRAPHIQUE AUX BORDURES IRREGULIERES STYLE WIDGET


 Information sur la source

Note :
9,29 / 10 - par 7 personnes
9,29 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaire Source .NET ( DotNet ) Classé sous :widget, png, transparence, alpha Niveau :Débutant Date de création :28/03/2006 Date de mise à jour :05/03/2007 08:48:11 Vu / téléchargé :12 636 / 2 414

Auteur : Pym Corp

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

 Description

Cliquez pour voir la capture en taille normale
Bonjour,

Voici une class qui pourra sûrement en aider plus d'un.

C'est une partie du code du logiciel "Meteo Fusion" : http://www.eggiz.org/meteo-fusion/
Ce bout de code vous permet de créer une form à partir d'une image transparente au format PNG

Le code original (en C#) n'est pas de moi, il vient de CodeProject :
http://www.codeproject.com/cs/media/perpxalpha_s harp.asp

Je n'ai donc pas beaucoup de mérite, j'ai simplement retranscrit le C# en VB, mais j'ai eu du mal à trouver cette méthode, alors je la poste ici pour la faire connaître par le plus de monde.


 Conclusion

Pour reparler de mon logiciel de météo, si ça vous intéresse de participer au développement, écrivez-moi par le formulaire de contact de mon site.
Merci à Charles Racaud alias Kenji (http://www.vbfrance.com/auteurdetail.aspx?ID=2314 72) qui m'a bien aidé sur ce projet.

 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


 Historique

05 mars 2007 08:48:11 :
modification de la description

 Sources de la même categorie

Source avec Zip Source avec une capture RÉPERTOIRE TÉLÉPHONE SIMPLE VB2008 EXPRESS EN LIEN AVEC FICH... par stef68600
Source avec Zip Source avec une capture Source .NET (Dotnet) EDITEUR DE TEXTE WINFORM AVEC CORRECTEUR ORTHOGRAPHIQUE WPF par gillardg
Source avec Zip Source .NET (Dotnet) MODIFIER L'OPACITÉ D'UN FORMULAIRE AU PASSAGE DE LA SOURIS par Arnal88
Source avec Zip Source avec une capture LOGICIEL BONS DE TRAVAUX par gnieark
Source avec Zip Source avec une capture Source .NET (Dotnet) AFFICHER UNE IMAGE DANS UNE CELLULE D'UN DATAGRIDVIEW LIÉ À ... par christcnet

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture BOUTON STYLÉ par Flocreate
Source avec Zip DÉPLACER UN OBJET TRANSPARENT (PNG AVEC COUCHE ALPHA) SUR UN... par deleplace
Source avec Zip Source avec une capture Source .NET (Dotnet) FORMS SKINNABLES STYLE WIDGET (VB2005) par stefsouron
Source avec Zip Source avec une capture EXEMPLE D'UTILISATION DE GDI+ DANS VB6 par Renfield
Source avec Zip OPACITÉ D'UNE FENETRE: LA RENDRE TRANSPARENTE par Tilois

Commentaires et avis

Commentaire de TOTOCHITO le 29/03/2006 09:01:44

c'est dommage tout est fait en 2005 maintenant

Commentaire de eldim le 29/03/2006 09:51:51

Super chouette

ça ne supporte que le png ?

Commentaire de spy166 le 29/03/2006 13:11:22

@TOTCHITO : C'est l'avenir que veux tu :)

@ELDIM : Oui, ça ne supporte que le png. Il n'y a pas d'intérêt à supporter d'autres format car à ma connaissance, seul le png permet des dégradés de transparence.

Commentaire de Pym Corp le 29/03/2006 13:27:15

Sympa de répondre pour moi !
--> Totochito c'est fait en 2005, mais le code doit être compatible avec .NET 1.x en théorie
--> Merci Eldim ! Oui ça ne supporte que le png (le meilleur format image au monde selon moi ^^)
--> spy166 : Faut il y'a aussi le format mng, en gros un png animé. Mais il n'est pas supporté par grand chose encore, voir ici pour plus d'infos : http://fr.wikipedia.org/wiki/Multiple-image_Network_Graphics

@+

Commentaire de TOTOCHITO le 29/03/2006 16:26:02

ouhai je sais bien mais tout le monde ne l'a pas en revanche ça va venir bientot pour ma part

Commentaire de MaToun le 03/04/2006 11:14:08

Bravo ! Tres beau !! Code un peu plus complexe que les autres code de détourages vus Ici !

Commentaire de dvdstory le 03/04/2006 23:09:00

Pour moi aussi je trouve que le PNP est le meilleur format d'image et comme par hasard c'est un format Open-Source.
Grand Merci à la Communauté Open Source.
Human knowledge belongs to the world

Commentaire de Icarius44 le 20/04/2006 17:17:35

Super, c'est rapide, c'est beau! bon travail ;)

Commentaire de Benz le 04/06/2006 15:57:59

C'est très sympa en effet. Ca doit permettre de faire des soft super sympa au niveau design (comme ton appli méteo).

Pourrais tu ajouter quelques commentaires dans le module pngForm.vb s'il te plait.

En fait, j'ai beaucoup de mal à adapter ton code. Au lieu de créer un nouveau form avec un fond en png, dépourvu de tout contrôle, je voudrais que le fond d'un form existant (contenant des contrôles) soit un png.

Je ne suis pas certain d'avoir été très clair, mais quelques commentaires seraient le bienvenus.
En tout cas, merci pour cette contribution.

Commentaire de renocmoa le 08/06/2006 09:52:35

Super efficace et pratique mais je debute et suis un simple bricoleur et j'aimerais aussi savoir comment ajouter des controles...

si qqun peut m'aider ou me dire comment (ou avec quoi) je peux faire des formulaires perso, c'est visiblement complexe mais je suis sûr qu'il y une solution...

merci

Commentaire de Pym Corp le 08/06/2006 15:50:36

Benz --> Pour les commentaires dans pngForm.vb je ne vais pas en ajouter, c'est tout un tas de d'appel aux API pour la plupart pour créer une fenêtre de style Layer, il n'y a pas vraiment grand chose à commenter. C'est juste qu'il faut que ça soit comme celà sinon ça ne marche pas, après qu'est-ce qui fait quoi exactement, je ne sais pas.

Et sinon la solution pour ajouter des controles c'est de faire vos propres objets graphiques réagissants à la souris et au clavier et de les dessiner sur la form ou encore d'utiliser ceux existant en appelant le refresh de chaque controle à chaque évènement utilisateur interargissant avec les controles en question.

Commentaire de Benz le 08/06/2006 16:03:08

Merci Pym, ok pour les commentaires.
Par contre, pour les contrôles, je ne vois pas du tout comment faire.

Lorsque tu crée un form, tu le vois à l'écra, et tu peux poser des controles dessus, mais dans ton exemple, le form est généré automatiquement, donc tu ne peux rien mettre dessus. N'y a t'il pas une solution pour ne pas générer le form par le code mais plutôt appliquer le skin à un form créé avec le menu ? Tu vois ce que je veux dire ?

Commentaire de Pym Corp le 08/06/2006 16:18:57

Oui je vois mais on ne peut pas. Le truc à faire est de créer ta form, puis ajouter par le code les controles et leurs événements recpectifs.

Ce n'est pas simple ni pratique, mais si tu trouves un meilleur moyen fait moi signe :)

Commentaire de Benz le 08/06/2006 16:23:40

C'est ce que je voulais éviter justement.
Mettre deux ou trois contrôles sur un form de ce type ça peut aller, mais faire une appli complète de cette façon, c'est galère.

Je n'ai pas de solution (pas assez de pratique en .net et sur VB en général), dommage parce que ça donne vraiment un résultat excellent. Quoi qu'il en soit, je suis persuadé qu'il existe une façon d'appliquer un skin en PNG (avec différents niveaux de transparence pour les dégradés d'ombre)... reste à la trouve :-)

En tout cas merci de ta contribution, ça permettra peut être de faire avancer les choses.
Si jamais je trouve un truc, j'essaierais de penser à mettre un nouveau post ici.

Commentaire de jmenfous le 23/06/2006 13:34:11

Pardon d'avance de répondre sans avoir pris le temps de tester (gros manque de temps).

Si vous créez dynamiquement votre form, la solution pourrait être de créer une form normale avec vos control puis de créer la form skinable en héritant de votre form.

Simple proposition, je vais voir la source dès que j'aurai un peu de temps à moi.

Commentaire de Benz le 23/06/2006 13:57:19

Si tu arrives à faire ça ou si tu as un exemple, ton aide sera la bienvenue :-)

Commentaire de jmenfous le 23/06/2006 15:09:43

J'ai pris un peu de temps pour tester une form héritée de votre pngForm,... et ça marche, enfin pas vraiemnt comme je voudrais.

J'ai modifié pngForm avec le code suivant

#If CONFIG = "Debug" Then
    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
        Get
            Return MyBase.CreateParams
        End Get
    End Property
#Else
    Private Const WS_EX_LAYERED As Integer = &H80000
    Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
        Get
            Try
                Dim cp As CreateParams = MyBase.CreateParams
                cp.ExStyle = cp.ExStyle Or WS_EX_LAYERED
                Return cp
            Catch ex As Exception
                Return MyBase.CreateParams
            End Try
        End Get
    End Property
#End If

Pour que ce code ne soit pas pris en compte lors du débugage, cepandant apres génration à mon grand regret Visual gadre CONFIG sur realese. Rien de génant il faut juste relancer le debug avant de voualoir à nouveau toucher à ses forms hérités de pngForm. donc ça marche, mais à mon gout ce n'est pas encore ça car ça donne un aire de travail pas fini.

Bon résultat on peut créer des forms héritée de pngForm et ajouter des controls.
Mauvaise nouvelle, les controls sont bien présents, et bien à leur place mais ils semble dessinés sous le skin... si quelqun à une idée?

Commentaire de Pym Corp le 23/06/2006 15:12:54

Oui c'était ça le problème que j'ai essayé de vous dire.
Ils sont bien là mais on ne les voit pas :|

Commentaire de jmenfous le 23/06/2006 15:37:12

Et bien je conirme alors que la creaton dynamique ne solutionne pas le souci car par l'utilisation d'un formulaire herite, les controls cont crees apres le formauleri... pas cool, pas cool.

Et dans la serie des mauvaises nouvelles, j'ai regarde de pres les apis qui sont utilses ici et je suis mort de rire... enfin rire jaune. Ils s'agit deja de methodes que j'ai exploite en vb6 et je n'ai jamais trouve le moyen de separer le layout de la form ni meme le pointeur qui represente la feuille(HWND) de ses controls. Donc a mon niveau c'est sans suite, so sorry le rendu des contour etait tellement sympas :-/

Commentaire de Geekspirit le 26/11/2006 12:13:17

Salut, j'ai travaillé toute la nuit sur le code et je n'ai pas trouvé de solution pour ses controls invisible. Je voit que cela fait deja un bon petit moment que vous avez arreter de chercher, mais j'insiste en disant que ce code est vraiment extra et fournit des qualité pour des application skinable grandiose. Ma demande serai de continuer à chercher si le coeur vous en dit. Aussi j'aimerais pouvoir acceder au code de météo fusion car le lien est cassé et n'est plus accessible. Si vraiment il n'y a aucun moyen ou que personne ne veut se repoencher sur le problème, passé moi svp un exemple avec les solutions que dit Pym Corp le 08/06/2006 15:50:36. Merci à vous de maccorder du temps. Bon code à vous.

Commentaire de Pym Corp le 21/02/2007 19:46:34

Je retombe ici par hasard parce que j'ai justement repris le développement de Meteo Fusion depuis peu ( http://forum.crystalxp.net/index.php?showtopic=16529 )

Geekspirit je n'avais pas du tout vu ce message ni celui dans mes MP... As tu trouvé une solution a ton problème depuis tout ce temps ?

Commentaire de pifou25 le 13/03/2007 16:11:34

c'est interessant cet exemple! moi l'ennui que j'ai c'est que ça marche pas du tout si j'insère ce formulaire dans un MDI... je comprend pas du tout pourquoi :/ sinon tel quel c'est super ça ouvre des portes :)

Commentaire de bolandfranck le 14/03/2007 08:40:24

Pym Corp >> J'ai trouvé certaine méthode mais ce code m'a aider a comprendre beaucoup de chose. Depuis je me suis lancé sur la création de mes propres control même si j'ai beaucoup de mal. Avec l'arrivée de vista je trouve qu'il serait vraiment bien de créer des control  paramétrable  "dans tous les sens" Faite moi signe svp si vous avez des codes a proposer. Merci

Commentaire de neo022 le 15/07/2007 00:49:59

Bonjour tout le monde!!
Je suis ravi de vous annoncer que j'ai trouvé le moyen d'ajouter des controls sur cette magnifique PNG form :D
Le code reste a perfectionner mais le gros y est notament qd on reduit et maximise ca peche un peu mais bon la
je poste ca comme ca je modifier en meme tps chez moi donc bon ^^ si jamais je trouve le truc qui va pile poil
je reposterais ^^.
j'avoue c'est vraiment barbare! mais bon ca marche ^^
J'explique rapidement le principe puis je met un peu de code
        
Tout d'abord on a 3 form
Demarrage (qui peux disparaitre après)
pngform
fc (formulaire contenant les controls)

La form "Demarrage" va, avec un bouton ou n'importe quoi d'autre créer la pngform.
Rien a toucher ou presque dans le code de la pngForm en effet on veux juste une image qui sera la fond de notre application.
Une fois la pngForm créer on crée la form qui contien tout nos controls (la fc) et c'est la que ca se corse un peu.
Sur cette form vous devez lui appliquer une couleur de fond qui sera transparente
donc par exemple le fushia:
ajouter se code au chargement de fc :

        Me.BackColor = Color.Fuchsia
        Me.TransparencyKey = Color.Fuchsia

En gros qd la form va s'afficher les controls "floteront" sur du transparent
Maintenant y a plus qu'a caller la fc sur la png form.
Les 2 form doivent avoir imperativement la meme taille!

Sur la form de demarrage
Private pngF As pngForm
Private ctrlF As fc
Private Sub Fc_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        pngF = New pngForm() 'creation de la pngForm
        ctrlF = New Form1(pngF) 'ici on lui envoi donc la nouvelle adresse de la form png pour pouvoir l'utiliser (la deplacer la re activer qd on reduit etc...)
End Sub

et sur le bouton:

        pngF.SetBitmap(CType(System.Drawing.Bitmap.FromFile(Application.StartupPath & "\Pictures\connect_splash.png").Clone, Bitmap))
        pngF.Top = Me.Top
        pngF.Left = Me.Left
        ctrlF.Top = Me.Top
        ctrlF.Left = Me.Left
        pngF.Show()
        ctrlF.Show()

Sur la form fc:

public pngFrm as pngForm 'en variable globale c'est le plus pratique ici on aura donc la variable en parametre du new
Public active as integer = 0
Public Sub New(ByRef pngF As pngForm)

        ' Cet appel est requis par le Concepteur Windows Form.
        InitializeComponent()
        ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
        pngFrm = pngF
        pngFrm.fc = Me 'et la je passe a la pngform l'adresse de la nouvelle form1 celle ou je suis actuellement

End Sub

Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        If active = 2 Then
            maf.Activate()
            Exit Sub
        End If
        Me.Refresh()
        pb1.Refresh()
End Sub

Private Sub Form1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LocationChanged
        pngFrm.Top = Me.Top
        pngFrm.Left = Me.Left
End Sub

Private Sub Form1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseLeave
        active = 2
End Sub

Private Sub desktopForm_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Left Then
            ReleaseCapture()
            SendMessage(Me.Handle.ToInt32, WM_NCLBUTTONDOWN, HTCAPTION, 0)
        End If
End Sub

et maintenant sur la pngform
il faut rajouter ceci au debut

Public Class pngForm 'code original
    Inherits Form 'code original
    Private ctrlF As fc 'code à rajouter

'c'est ici que le code merdouille un peu ca marche une fois sur 2
Private Sub pngForm_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        ctrlF.active = 0 'ici je passe la variable de fc qui s'appelle active je lui donne comme valeur 0
        ctrlF.Activate() 'maintenant que le fond est reactiver j'active les controls
End Sub

voila je crois que j'ai fait le tour.
C'est une astuce qui permet de pas trop trop galéré. Si vous avez des soucis a me comprendre se qui est fort probable :D
n'hésiter pas a m'envoyer un mail avec en objet: Source pngForm comme ca je comprendrais.

Bon courage a tous!

Commentaire de Pym Corp le 17/07/2007 13:03:08

En utilisant deux forms il y a un moyen beaucoup plus simple !

Il suffit de mettre quelque chose comme :
Form1.Owner = Me

et ensuite dans l'évènement Move de la form principale tu peux rajouter :
Form1.Location = Me.Location

Commentaire de neo022 le 22/07/2007 16:45:29

Lol je connaissais pas cela :D ca parait plus simple mais bon j'ai fait comme ca donc je v pas tout rechanger maintenant j'ai un peu la fleme mais pour les autres ca peut etre une piste

Commentaire de stefsouron le 22/10/2007 12:35:19

Salut, j'ai cherché pendant longtemps un code permettant de faire cela, et ça marche très bien. Néanmoins, j'aimerais aller plus loin, et nottament j'ai essayé de travailler sur un redimentionnement du bitmap, sans succés. Quand on joue sur le paramètre size de UpdateLayeredWindow, on change non pas la taille du bitmap mais de son rectangle d'affichage (le bitmap est donc rogné si on réduit).

J'ai alors cherché dans les propriétés de la classe Bitmap pour le redimentionner avant de le passer à UpdateLayeredWindow, mais voilà, ses propriétés Size, Width et Height sont readonly.

Quelqu'un connait-il une méthode simple (et rapide en temps machine) pour redimentionner un objet de classe bitmap ? Je suis sûr que cela doit exister dans les apis standart.

Merci

Commentaire de stefsouron le 24/10/2007 11:46:06

Après de nombreux essais et recherches, je sèche toujours pour le redimensionnement de la pngForm. J'ai posté ce que j'avais fait sur le forum API, pour essayer d'obtenir de l'aide, voir ici : http://www.vbfrance.com/infomsg_FORMS-AVEC-TRANSPARENCE-PIXEL-PROBLEMES-AVEC-GDI_1025911.aspx

Commentaire de stefsouron le 24/10/2007 19:39:15 10/10

Ca y est j'ai résolu le problème du redimensionnement. Vous pourrez trouver le code ici :
http://www.vbfrance.com/codes/FORMS-SKINNABLES-STYLE-WIDGET-VB2005_44495.aspx

Merci à tous.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Canal Alpha/ Transparence [ par GimliDotnet ] Bonjour,je cherche à détecter dans une image son canal alpha. Sachant que je ne connais pas l'image. Si elle possede un canal alpha, je voudrai connai "Tronquer le vide" d'un PNG en fonction de son canal alpha [ par Pym Corp ] Bonjour tout le monde =)Je viens chercher de l'aide de la part de personnes compétentes pour mon problème qui n'est je pense, pas solvable facilement. Transparence avec une image PNG ? [ par allthew3 ] Bonjour,j'avais un problème : lorsque j'affiche une image PNG dans une pictureBox sur mon application possédant une image de fond, il y avait du blanc comment ouvrir une PNG,ou .... [ par OzZArgaoussama ] Merci d'avance. une problem reste toujoure un defaut sur VB6 ,c'est que impossible de charger une image PNG sur un picture box car vb6 il nous don out of memory [ par arpege ] j'ai réalisé une petite application en VB.net 2005 qui consiste a charger toute les minutes une image .png dans un picturebox (je passe par un timer.. PictureBox, encapsulation et transparence [ par Cacophrene ] Bonjour tout le monde ! Je suis en train de programmer un contrôle utilisateur (un bouton, pour être précis). Je souhaite ajouter un effet de fondu à Appliquer masque-transparence sur photo [ par shinji_rem ] Bonjour, je fais une appli windows en Visual .NET, et j'aurai besoin d'arrondir les bords d'une photo JPEG. Il me faudrait un moyen d'appliquer un mas Transparence partiel ? [ par beuz13 ] Salut "Le Monde" ! ---J'aimerai savoir si il existe un code qui permet de réaliser le même effet que Windows Vista sur les bordures de ses fenêtres Extention .png ? [ par spinosorus ] bonjour a tous,J'ai traité des images qui ont une extention (png) et lorsque je voulais l'importer en vb6, il m'as pas accepter cette extention.Le pro transparence image [ par le pro masterchief ] Bonjour j'ai une question pour vous:Je programme un jeux de mario que j'avais déjà fait en vb6 et jai voulu utiliser l'utilitaire de migration de vb20


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,562 sec (3)

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