[vb.net] rectangle arrondi

Résolu
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 - 24 oct. 2006 à 14:51
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre 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.

8 réponses

Utilisateur anonyme
24 oct. 2006 à 16:49
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
3
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
25 oct. 2006 à 11:33
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
++
3
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
24 oct. 2006 à 15:04
Je penser utiliser l'api RoundRect mais je n'arrive pas a m'en servir sur un bitmap
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
24 oct. 2006 à 16:49
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
25 oct. 2006 à 08:31
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.
0
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
25 oct. 2006 à 08:49
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?
0
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
25 oct. 2006 à 09:14
En fait c'est bon, c'est + je met un radius elevé, + c'est beau
++
0
malhivertman1 Messages postés 489 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 22 novembre 2007 1
25 oct. 2006 à 09:27
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..
0
Rejoignez-nous