PictureBox bords arrondis [Résolu]

cs_ChamY 74 Messages postés mercredi 5 janvier 2005Date d'inscription 22 mai 2009 Dernière intervention - 3 nov. 2008 à 19:59 - Dernière réponse : cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention
- 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 

4 réponses

Répondre au sujet
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 4 nov. 2008 à 12:24
+3
Utile
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;
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Lutinore
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 4 nov. 2008 à 08:27
0
Utile
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
cs_ChamY 74 Messages postés mercredi 5 janvier 2005Date d'inscription 22 mai 2009 Dernière intervention - 4 nov. 2008 à 17:51
0
Utile
Merci beaucoup.
C'est exactement ce qu'il me fallait.

Merci à tous les deux
Commenter la réponse de cs_ChamY
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 4 nov. 2008 à 22:50
0
Utile
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.