Код: private void Form1_Load(object sender, EventArgs e) { System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath(); path.AddEllipse(0, 0, 100, 100); Region rgn = new Region(path); pictureBox2.Region = rgn; pictureBox2.BackColor = System.Drawing.SystemColors.GrayText; } Код private void Form1_Load(object sender, EventArgs e) { System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath(); path.AddEllipse(0, 0, 100, 100); Region rgn = new Region(path); pictureBox2.Region = rgn; pictureBox2.BackColor = System.Drawing.SystemColors.GrayText; } Как сгладить?
Мне нужно что бы выбранная фотка автоматически становилось круглой.(делаю возможность выбора аватарки)
Создаёшь метод ( код его ниже ) и вставляешь его в конструктор формы CODE /// <summary> /// Можешь менять пятёрки на другие цифры, так можно сглаживание регулировать. /// picBox - это имя твоего pictureBox /// </summary> private void CirclePb() { var graphP = new GraphicsPath(); graphP.AddEllipse(0, 0, picBox.Width - 5, picBox.Height - 5); picBox.Region = new Region(graphP); } Код /// <summary> /// Можешь менять пятёрки на другие цифры, так можно сглаживание регулировать. /// picBox - это имя твоего pictureBox /// </summary> private void CirclePb() { var graphP = new GraphicsPath(); graphP.AddEllipse(0, 0, picBox.Width - 5, picBox.Height - 5); picBox.Region = new Region(graphP); }
Тогда сделай свой контрол. Добавляешь в проект новый класс и называешь его RoundedPicBox ( Чисто для понимания, что это ). Далее наследуешь его от обычного PictureBox После чего переопределяешь метод OnPaint Ну и в этот метод вставляешь код -> CODE Brush brImg; try { var img = new Bitmap(Image); img = new Bitmap(img, new Size(Width - 1, Height - 1)); brImg = new TextureBrush(img); } catch { var img = new Bitmap(Width - 1, Height - 1, PixelFormat.Format32bppPArgb); brImg = new TextureBrush(img); } e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; var path = new GraphicsPath(); path.AddEllipse(0, 0, Width - 1, Height - 1); e.Graphics.FillPath(brImg, path); e.Graphics.DrawPath(Pens.Transparent, path); Код Brush brImg; try { var img = new Bitmap(Image); img = new Bitmap(img, new Size(Width - 1, Height - 1)); brImg = new TextureBrush(img); } catch { var img = new Bitmap(Width - 1, Height - 1, PixelFormat.Format32bppPArgb); brImg = new TextureBrush(img); } e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; var path = new GraphicsPath(); path.AddEllipse(0, 0, Width - 1, Height - 1); e.Graphics.FillPath(brImg, path); e.Graphics.DrawPath(Pens.Transparent, path); Потом жмёшь Ctrl + Shift + B (У тебя сбилдится проект ), а после заходишь в панель инструментов и там должен появиться твой контрол Ну, а после просто перетаскиваешь его на форму и в итоге вот так получается