PictureBox bords arrondis [Résolu]

Messages postés
74
Date d'inscription
mercredi 5 janvier 2005
Dernière intervention
22 mai 2009
- 3 nov. 2008 à 19:59 - Dernière réponse :
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 4 nov. 2008 à 22:50
Bonjour,
J'ai fais pas mal de recherche pour essayer de trouver une réponse à mon probleme (qui me parait pas tres compliqué), mais je n'ai rien trouvé.

Je souhaite avoir une pictureBox sur mon formulaire avec des bords arrondis. Et donc l'image qui est dedans aura aussi des bords arrondis.
Je ne peux pas arrondir les angles de mes images à la main par un utilitaire de dessin, car mon projet est sensé ouvrir / afficher plus de 500 images. Donc je vais pas toutes les retravailler :)
(car j'aurai pu mettre une image au bord arrondi puis jouer sur la transparence de la picturebox).

Comment faire pour modifier ce composant ?

Merci
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 4 nov. 2008 à 12:24
3
Merci
Salut, on peut jouer aussi avec la région du contrôle :

public Form1( )
{
    InitializeComponent( );


    Image img = Image.FromFile( @"C:\Users\Mike\Pictures\img.jpg" );
    GraphicsPath gp = GetRoundRect( 0.0f, 0.0f, 200.0f, 200.0f, 10.0f );


    PictureBox pb = new PictureBox( );
    pb.Parent = this;
    pb.Image = img;
    pb.Location = new Point( 20, 20 );
    pb.Size = new Size( 200, 200 );
    pb.Region = new Region( gp );


}
// http://www.bobpowell.net/roundrects.htm
public GraphicsPath GetRoundRect( float X, float Y, float width, float height, float radius)
{
    GraphicsPath gp = new GraphicsPath( );
    gp.AddLine(X + radius, Y, X + width - (radius*2), Y);
    gp.AddArc(X + width - (radius*2), Y, radius*2, radius*2, 270, 90);
    gp.AddLine(X + width, Y + radius, X + width, Y + height - (radius*2));
    gp.AddArc(X + width - (radius*2), Y + height - (radius*2), radius*2, radius*2,0,90);
    gp.AddLine(X + width - (radius*2), Y + height, X + radius, Y + height);
    gp.AddArc(X, Y + height - (radius*2), radius*2, radius*2, 90, 90);
    gp.AddLine(X, Y + height - (radius*2), X, Y + radius);
    gp.AddArc(X, Y, radius*2, radius*2, 180, 90);
    gp.CloseFigure();
    return gp;
}

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de Lutinore
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 4 nov. 2008 à 08:27
0
Merci
Bonjour;
Le picturebox ne peut pas avoir des bords arrondis.
Deux solutions: Soit tu utilises WPF et là je pense que c'est assez simple, soit tu fais un programme qui itère sur chacune de tes images pour leurs donner, dans les 4 coins, la même couleur que le fond de ton programme, de cette manière on croira que le bord est arrondi....

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Messages postés
74
Date d'inscription
mercredi 5 janvier 2005
Dernière intervention
22 mai 2009
- 4 nov. 2008 à 17:51
0
Merci
Merci beaucoup.
C'est exactement ce qu'il me fallait.

Merci à tous les deux
Commenter la réponse de cs_ChamY
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
- 4 nov. 2008 à 22:50
0
Merci
Lutinore> Je n'y avais pas pensé, merci ;-)

<hr />
-My Blog-
-My WebSite-
Commenter la réponse de cs_Bidou

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.