Загрузка...

Сглаживание круглого Picturebox - C#

Тема в разделе C# создана пользователем Pavel6025 2 апр 2017. 2009 просмотров

Загрузка...
  1. Pavel6025
    Pavel6025 Автор темы 2 апр 2017 90 15 авг 2016
    Код:
    Код

    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;
    }
    Как сгладить?
     
    2 апр 2017 Изменено
  2. Hangover_inactive59523
    нарисуй в пеинте, что тебе нужно, я лично ничего не понял
     
  3. Pavel6025
    Pavel6025 Автор темы 4 апр 2017 90 15 авг 2016
    Мне нужно что бы выбранная фотка автоматически становилось круглой.(делаю возможность выбора аватарки)
     
  4. Hangover_inactive59523
    Так ?
    [IMG]
     
  5. Hangover_inactive59523
    Создаёшь метод ( код его ниже ) и вставляешь его в конструктор формы
    [IMG]

    Код
    /// <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);
    }
     
  6. Pavel6025
    Pavel6025 Автор темы 5 апр 2017 90 15 авг 2016
    По бокам круга нету сглаживания
     
  7. Hangover_inactive59523
    Тогда сделай свой контрол.

    Добавляешь в проект новый класс и называешь его RoundedPicBox ( Чисто для понимания, что это ).
    Далее наследуешь его от обычного PictureBox
    [IMG]
    После чего переопределяешь метод OnPaint
    [IMG]
    Ну и в этот метод вставляешь код ->
    Код
    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 (У тебя сбилдится проект ), а после заходишь в панель инструментов и там должен появиться твой контрол
    [IMG]
    Ну, а после просто перетаскиваешь его на форму и в итоге вот так получается
    [IMG]
     
  8. zjilka
    zjilka 3 мар 2018 0 3 мар 2018
    Спасибо, очень помогли!
     
Top