[vb.net] rectangle arrondi [Résolu]

Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
22 novembre 2007
- 24 oct. 2006 à 14:51 - Dernière réponse :
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
22 novembre 2007
- 25 oct. 2006 à 11:33
Bonjour, je creer un bitmap avec
        Dim MonBitMap As New Bitmap(Larg, Haut)

puis je dessine dedans en utilisant un graphics
        Dim MonObjGfx As Graphics
        MonObjGfx = Graphics.FromImage(MonBitMap)

j'aimerai que qd je créer un rectangle avec
        MonObjGfx.DrawRectangle
il est les bords arrondis.

Comment faire?

merci.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
- 24 oct. 2006 à 16:49
3
Merci
Salut,

Une petite recherche :



'Merci Badrbadr (http://www.csharpfr.com/codes/ROUNDEDRECTANGLE-CREEZ-RECTANGLES-AVEC-COINS-ARRONDIS_35392.aspx)

Private

Function
GetRoundedRectPath(
ByVal
Rect
As
System.Drawing.Rectangle,
ByVal
Radius
As

Integer
)
As
System.Drawing.Drawing2D.GraphicsPath

  
Dim
Diameter
As

Integer
= 2 * Radius

  
Dim
ArcRect
As

New
System.Drawing.Rectangle(Rect.Location,
New
Size(Diameter, Diameter))

  
Dim
Path
As

New
System.Drawing.Drawing2D.GraphicsPath()

  Path.AddArc(ArcRect, 180, 90)

  ArcRect.X = Rect.Right - Diameter

  Path.AddArc(ArcRect, 270, 90)

  ArcRect.Y = Rect.Bottom - Diameter

  Path.AddArc(ArcRect, 0, 90)

  ArcRect.X = Rect.Left

  Path.AddArc(ArcRect, 90, 90)

  Path.CloseFigure()

  
Return
Path

End

Function




Pour l'utilisation :



Dim
MonBitMap
As

New
System.Drawing.Bitmap(Larg, Haut)

'puis je dessine dedans en utilisant un graphics

Dim
MonObjGfx
As
System.Drawing.Graphics = System.Drawing.Graphics.FromImage(MonBitMap)

MonObjGfx.DrawPath(Pens.Red, GetRoundedRectPath(
New
System.Drawing.Rectangle(0, 0, 50, 50), 6))





Kenji

Merci Charles Racaud 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de Charles Racaud
Meilleure réponse
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
22 novembre 2007
- 25 oct. 2006 à 11:33
3
Merci
ok c'est bon, j'ai pris la source
http://www.vbfrance.com/codes/RECTANGLES-ARRONDIS_38893.aspx
comme modèle et j'ai pu réussir ce que je voulais
++

Merci malhivertman1 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de malhivertman1
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
22 novembre 2007
- 24 oct. 2006 à 15:04
0
Merci
Je penser utiliser l'api RoundRect mais je n'arrive pas a m'en servir sur un bitmap
Commenter la réponse de malhivertman1
Messages postés
884
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
3 mars 2009
- 24 oct. 2006 à 16:49
0
Merci
Salut,


De mémoire, (je ne suis pas sur mon pc, je n'ai donc pas testé...) :

Declare Function RoundRect Lib "gdi32" ( _
                 ByVal hdc As IntPtr, _
                 ByVal X1 As Integer, _
                 ByVal Y1 As Integer, _
                 ByVal X2 As Integer, _
                 ByVal Y2 As Integer, _
                 ByVal X3 As Integer, _
                 ByVal Y3 As Integer) as Integer


dim hdc as IntPtr

hdc = MonObjGfx.GetHdc

RoundRect(hdc, ...)

MonObjGfx.ReleaseHdc(hdc)


Voila !

Sur msdn, y'a un flag avant la fonction indiquant apparement qu'on fait
de l'unmanaged, je ne vois pas pourquoi, si un gourou peut éclairer ma
lanterne ... Si jamais ca marche pas mets-le, regarde dans l'exemple... (http://msdn2.microsoft.com/fr-fr/library/9z5820hw.aspx)


Julien.
Commenter la réponse de Julien237
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
22 novembre 2007
- 25 oct. 2006 à 08:31
0
Merci
Merci [auteurdetail.aspx?ID=231472 Charles Racaud], ca n'arrondi pas exactement les bords, ca les coupe + mais ca me convient bien
C'est trés sympa de m'avoir donné un code que je n'ai plu qu'a inserer !

Merci aussi à julien de s'etre penché sur le probleme.

Bonne journée à vous.
Commenter la réponse de malhivertman1
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
22 novembre 2007
- 25 oct. 2006 à 08:49
0
Merci
par contre, sur la source en C#, les coins sont trés bien arrondis et moi, ils sont coupés mais pas tout les coins pareils? c'est parce qu'il faut que j'affine le parametrage dans la fonction GetRoundedRectPath avec les arcs?
Commenter la réponse de malhivertman1
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
22 novembre 2007
- 25 oct. 2006 à 09:14
0
Merci
En fait c'est bon, c'est + je met un radius elevé, + c'est beau
++
Commenter la réponse de malhivertman1
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Dernière intervention
22 novembre 2007
- 25 oct. 2006 à 09:27
0
Merci
par contre, un dernier truc, comment je fais pour que par exemple, il y ai les bords arrondi juste en haut, ou juste en bas, etc..
Commenter la réponse de malhivertman1

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.