Очистка PictureBox от объектов Graphics

404
02 апреля 2017, 01:35

Всем доброго времени! можно ли очистить pictureBox от нарисованных Image так, что бы очистились только те объекты Image у которых .Tag совпадает с .Tag создаваемого(рисуемого) в данный момент Image ? суть в том, что на фоновом рисунке (рубашка) появляются части (воротник, карман, манжет ect) в разных стилях.такой конструктор одежды. сейчас проблема в том, что уже нарисованное накладывается на новое, получается 4 воротника, 3 кармана в одном месте ect. Можно ли их как то очищать прежде чем добавить новый? Стоит ли использовать Tag или ест другой способ?

    private void onRBstyleClick(object sender, MouseEventArgs e)
    {
        RadioButton _rb = sender as RadioButton;
        string fileName = _rb.Text;
        string path = $"styles/shirt/{fileName}.png";
        try
        {
            Image im = Image.FromFile(path);
            im.Tag = _rb.Tag;
            Graphics gr = pbx_StylePic.CreateGraphics();
            gr.DrawImage(im, new Point(0, 0));
        }
        catch (System.IO.FileNotFoundException)
        {
            MessageBox.Show("Картинка не найдена");
        }           
    }

На ум приходит только править сами рисунки что бы они накладывались и закрывали друг друга в нужных местах. Но нет ли другого способа?

Answer 1

Нет никакого другого способа, Graphics - это растр, и слои не поддерживаются.

READ ALSO
Проблема с отображением данных в ChartControl WPF

Проблема с отображением данных в ChartControl WPF

Установил DataSourse в IEnumerable, в DataContext подцепил

281
Как конвертировать wav stereo в mono?

Как конвертировать wav stereo в mono?

Догадываюсь что такие вопросы здесь не любят, но всё же рискну

294
Microsoft.Azure.DocumentDB After update Error (Method not found)

Microsoft.Azure.DocumentDB After update Error (Method not found)

When i updatet documentDB sdk i have this error

264
Отображение пустых ячеек в DataGridView C#

Отображение пустых ячеек в DataGridView C#

Здравствуйте! При загрузке WinForm формы вызывается метод, который должен заполнить DataGridView данными полученные с запроса (использую MySQL) Запрос...

443