begin process at 2012 02 14 07:08:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

Contour d'une Form arrondi


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Contour d'une Form arrondi

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ée 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 changement de form sans que ca se voit [ par lirmo ] Bonjour, J'aimerais changer de form sans que ca se voit, car cela fait très bizarre. Pourriez-vous me donner la solution?? Merci Chargement d'une form [ par Bernard74 ] Bonjour, J'ai un problème pour charger une form avec l'instruction suivante : Private Sub NomenclatureActesToolStripMenuItem_Click(ByVal sender A "envoyer et sauvegarder des valeurs" d'une form à une autre. [ par palm90 ] Bonjour, j'ai un programme avec 3 forms. La première permet de sélectionner un item parmi des listboxs et d'appuyer sur un bouton chronomètre.La deux Manipulation des form mdi [ par aminvitch ] [size=200]S il Vous palais je veux une ptite aide .......... je veux rendre une form mdi qui saffiche dans un menu au centre de menu principale et per smtp [ par clementgeek41 ] Bonjour j ai fait un programme en vb 2010 et j ai créer une form pour indiquer adresse email gmail et le mot de passe mais je ne sais pas comment le r Problème avec un form [ par Vigneronjul ] Bonjour à tous, Je vous expose un petit problème auquel je n'ai encore jamais été confronté. Je passe de form en form au fur et a mesure de mon pro Submit une form [ par mchurlet ] Bonjour, J'ai une form HTML à soumettre mais lorsque j'utilise l'action submit, les données ne sont pas prise en compte et la page est rechargée sans RS232 [ par laurentkreps ] Bonjour, j'ai parcouru ce forum (et d'autres) et il me semble que pas mal de personnes ont du mal avec le RS232. J'ai aussi l'impression que tout ça ajouter barres de deftlement a une form vb6 [ par qaskaror ] bonjour si vous avez une idée comment ajouter les barres de défilement horizontales et verticales a une form vb6 . "il est nécessaire de les ajouter


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

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