Bords arrondis dans la boîte à images C #

Comment arrondir les bords dans le contrôle Picturebox. Je veux obtenir des angles similaires à ceux de l’ellipse, mais je ne sais pas comment le faire. J’utilise C #. Merci!

Oui, pas de problème, vous pouvez donner à un contrôle une forme arbitraire avec sa propriété Region. Ajoutez une nouvelle classe à votre projet et collez le code ci-dessous. Comstackr. Déposez le nouveau contrôle du haut de la boîte à outils sur votre formulaire.

using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; class OvalPictureBox : PictureBox { public OvalPictureBox() { this.BackColor = Color.DarkGray; } protected override void OnResize(EventArgs e) { base.OnResize(e); using (var gp = new GraphicsPath()) { gp.AddEllipse(new Rectangle(0, 0, this.Width-1, this.Height-1)); this.Region = new Region(gp); } } } 

mettre 1 zone d’image sur le formulaire et écrire ce code aussi vous pouvez changer le nombre moins à côté de Largeur et Hauteur pour obtenir le meilleur résultat

  System.Drawing.Drawing2D.GraphicsPath gp = new System.Drawing.Drawing2D.GraphicsPath(); gp.AddEllipse(0, 0, pictureBox1.Width - 3, pictureBox1.Height - 3); Region rg = new Region(gp); pictureBox1.Region = rg; 

entrez la description de l'image ici

Bords arrondis comme dans les coins arrondis?

Si tel est le cas, consultez http://social.msdn.microsoft.com/forums/en-US/winforms/thread/603084bb-1aae-45d1-84ae-8544386d58fd

 Rectangle r = new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height); System.Drawing.Drawing2D.GraphicsPath gp = new System.Drawing.Drawing2D.GraphicsPath(); int d = 50; gp.AddArc(rX, rY, d, d, 180, 90); gp.AddArc(rX + r.Width - d, rY, d, d, 270, 90); gp.AddArc(rX + r.Width - d, rY + r.Height - d, d, d, 0, 90); gp.AddArc(rX, rY + r.Height - d, d, d, 90, 90); pictureBox1.Region = new Region(gp); 

Merci Hans. Mais j’ai aussi besoin d’un regard lisse. J’ai fait des recherches sur ce sujet, mais je n’ai pas pu trouver de solution. Ensuite, j’ai essayé de le faire moi-même et j’ai trouvé la solution ci-dessous. Peut-être que quelqu’un d’autre en a besoin.

 protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); using (GraphicsPath gp = new GraphicsPath()) { gp.AddEllipse(0, 0, this.Width - 1, this.Height - 1); Region = new Region(gp); e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; e.Graphics.DrawEllipse(new Pen(new SolidBrush(this.BackColor), 1), 0, 0, this.Width - 1, this.Height - 1); } }