Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Contour d'une Form arrondi [ Windows / Formulaire / Winforms / Controls ] (EvilGost)

jeudi 12 juillet 2007 à 19:51:55 | Contour d'une Form arrondi

EvilGost

Membre Club
Bonjour à tous,

Je suis en .NET et j'ai une form sans bordures (FormBorderStyle=none), donc je n'ai plus de bordures et de controlbox, car j'aimerai moins même faire ma propre forme avec les boutons de mon choix. J'ai, cependant, créer des images donnant l'impression d'avoir les bordures de la form arrondies (un peu comme windows live messenger), mais quand je lance l'appli, on voit du blanc aux 4 coins de l'application (on voit la background de la form).

Je souhaiterai obtenir ce résultat: [ Lien ]
Savez-vous comment faire pour que l'on voit plus le fond de la form rectangulaire?

Merci beaucoup pour votre aide

EvilGost [;)]

jeudi 12 juillet 2007 à 19:57:58 | Re : Contour d'une Form arrondi

jack

Administrateur CodeS-SourceS
Salut
Tu tapes "forme arrondie" dans le moteur de recherche du site + case à cocher ".Net uniquement" et tu auras quelques sources qui en parlent

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

vendredi 13 juillet 2007 à 10:58:42 | Re : Contour d'une Form arrondi

EvilGost

Membre Club
Effectivement, il y a 3 source sur VBFrance, malheureusement, l'une n'est pas adapté, le deuxieme n'a rien a voir,et la troisieme ne fonctionne pas...c'est pour ca que je poste ici, je n'arrive pas à trouver de source qui fonctionne...

EvilGost [;)]

vendredi 13 juillet 2007 à 11:44:29 | Re : Contour d'une Form arrondi

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Regarde du côté des régions. C'est vraiment simple d'arrondir les bors d'une fenêtre avec ça.



vendredi 13 juillet 2007 à 11:47:25 | Re : Contour d'une Form arrondi

thephil

j'ai eu à faire un programmeau forme original, j'ai fait ça à l'aide de la transparence (cherche ce terme sur le forum).
En fait il te suffis d'appliquer la transparence à ta form, et si tu as par exemple une image possée sur cette form, ta form prendra les contours de l'image !

voilà le code, qui vient d'ici si je me souviens bien, donc merci à son auteur !
par contre c'est du vb6 !!! donc à adapter certainement si tu es en .net....

dans un module
-----------------------------------------------------------------------------
Public Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2
Public Const RGN_OR = 2

Public Function MakeRegion(picSkin As PictureBox) As Long
   
    ' faites une fenêtre "région" basée sur une picture de picture box
    ' Ceci ce fait en passant l'image pixel par pixel et en créant une
    ' région pour chaque pixel non transparent
    ' Le code est optimisé, il est donc assez rapide
   
    Dim X As Long, Y As Long, StartLineX As Long
    Dim FullRegion As Long, LineRegion As Long
    Dim TransparentColor As Long
    Dim InFirstRegion As Boolean
    Dim InLine As Boolean
    Dim hDC As Long
    Dim PicWidth As Long
    Dim PicHeight As Long
   
    hDC = picSkin.hDC
    PicWidth = picSkin.ScaleWidth
    PicHeight = picSkin.ScaleHeight
   
    InFirstRegion = True: InLine = False
    X = Y = StartLineX = 0
   
    ' Ici, la couleur de transparence est basé sur le pixel en haut a gauche
    ' Mais vous pouvez mettre la couleur ke vous voulez
    TransparentColor = GetPixel(hDC, 0, 0)
   
    For Y = 0 To PicHeight - 1
        For X = 0 To PicWidth - 1
           
            If GetPixel(hDC, X, Y) = TransparentColor Or X = PicWidth Then

                If InLine Then
                    InLine = False
                    LineRegion = CreateRectRgn(StartLineX, Y, X, Y + 1)
                   
                    If InFirstRegion Then
                        FullRegion = LineRegion
                        InFirstRegion = False
                    Else
                        CombineRgn FullRegion, FullRegion, LineRegion, RGN_OR

                        DeleteObject LineRegion
                    End If
                End If
            Else
                If Not InLine Then
                    InLine = True
                    StartLineX = X
                End If
            End If
        Next
    Next
   
    MakeRegion = FullRegion
End Function
--------------------------------------------------------------
**********************************************
puis dans ton forma load, tu rajoutes un truc du genre :
--------------------------------------------------------------

Dim WindowRegion As Long
   
'Propriétés de la picture box
    Picture1.AutoRedraw = True
    Picture1.AutoSize = True
    Picture1.BorderStyle = 0
    Picture1.ScaleMode = 3

    'Position de la picture box
     Picture1.Top = 0: Picture1.Left = 0

    '"Découpe" la form suivant Picture1
    WindowRegion = MakeRegion(Picture1)
    SetWindowRgn Me.hWnd, WindowRegion, True

--------------------------------------------------------------
**********************************************


vendredi 13 juillet 2007 à 11:57:17 | Re : Contour d'une Form arrondi

EvilGost

Membre Club
Réponse acceptée !
Et bien en fait, après de multiples recherche, je viens de trouver une solution, en .NET, c'est vraiment tout con, mais bon, faut le savoir.
Il suffit de sélectionner le formulaire, et de mettre la propriété BackColor = Red. Ensuite, toujours dans les propriétés de la form, mettez TransparencyKey à Red.
Lancez l'appli et hop , tout ce qui est rouge est transparent.

Merci à Jack, RT5 et ThePhil pour votre aide ;)

EvilGost [;)]

vendredi 13 juillet 2007 à 13:05:48 | Re : Contour d'une Form arrondi

TeBeCo

Membre Club
le pb de transparency key c'est que tu peux pas la mettre a transparent car la classe Form ne l'accepte pas comme etant possible donc si tu voulais joué avec les nuance de couleur ca marchera pas ... (et l'opacité a rien a voir des fois que qqun tente :p)
de manière plus general il est GRANDEMENT prérable de ne pas passer par une couleur et un transparencykey juste pour des coin arrondi mais de directement manier les region GDI avec des forme ou/et des graphicpath ca lui evite deja de dependre d'un fichier externe d'etre plus lent de prendre plus de RAM ect ....

et pour "thephil" vu que tu est passé en vb.net oublie les API windows pour faire du GDI presque tout existe en Managé dans le framework 0 API pour joué avec les regions c'est deja tout defini dans System.Drawing.
il suffit de créé 4 droites et 4 arc de cercle ca fait 8 ligne et c'est reglé

TeBeCo

vendredi 13 juillet 2007 à 13:07:11 | Re : Contour d'une Form arrondi

TeBeCo

Membre Club
et encore je suis en train de me demander si en definissant les arc il demandera pas le point de depart et l'angle auquel cas il relirais les arc entre eux donc si tu les fait dans l'ordre ca ferai jsute les 4 definitions des 4 angles et c'est tout

TeBeCo



Cette discussion est classé dans : form, arrondi, voit, contour, bordures


Répondre à ce message

Sujets en rapport avec ce message

Changer la couleur des bordures d'un form [ par barth707 ] Bonjour,je cherche a changer la couleur des bordures des formulaires de mon projet, plutot que le bleu de windows j'aimerais du vert.Voila merci pour Formulaire web dans une form en vb [ par Hecco ] Bonjour à toutes et à tous.J'utilise pour gérer mon formulaire un webbrowser en visual basicj'ajouter aussi deux références.- Microsoft internet contr recopier un text box d'un form a un autre [ par wafavb ] bonjourj'ai 2 forms et je voudrais copier une valeur dans un text box se trouvant dans le 1er form verrs un autre se trouvant dans le deuxième comment Chargement de l'application [ par RaZoR ] Je voudrais savoir si il est possible de créer une form de chargement qui se mette "devant" la form principale et qui attent que cette derniere est fi Progressbar et form_load [ par nebut ] Bonjour,je voudrais lier une progressbar d'une form à l'execution de l'évenement form_load d'une autre formVoici le code de la form (elle s'appelle at convertir une string en nom de formulaire [ par bullow ] J'ai tapé le code suivant (form2 étant un form existant) :Dim nom_formulaire As FormSet nom_formulaire = Form2nom_formulaire.ShowCela fonctionne.Par c Excel et VB [ par nebut ] Bonjour à tous j'ai une petite question qui me trotte :Je travaille sur une application qui contient une form.Cette form permet à l'utilisateur d'envo detection de tous les etats et formulaires [ par doberman12 ] bonjour a tousvoila, je voudrais connaitre tous les formulaires et etats présents dans ma base de données access pour generer un menu automatique. j'a fermer form recouverte dun composant [ par jotrash ] bonjour jevoudrai savoir comment unloader une form en cliquant sur ou appuyant sur une touchelaform est recouverte dun composant shockwawe flashfaut-i Les icones du bureau... [ par z980x ] Salut a tous...Je voudrais savoir comment faire pour avoir les icones du bureau dans une form...J'ai une icone sur mon bureau, je veux qu'elle soit da


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 2,231 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.