Изменение цвета картинки в picturebox

332
22 мая 2017, 23:57

Имеется изображение синего квадрата, залитое в picturebox. Можно ли сделать его цвет (или оттенок) красным, без смены его на другое изображение или изменение цвета каждого пикселя?

Answer 1

Можно поверх PictureBox разместить панель, залитую полупрозрачным цветом.

Для тестирования создаём новый проект Windows Forms, в конструктор формы помещаем код:

public Form1()
{
    //InitializeComponent();
    // Создаём изображение - синий квадрат
    var bmp = new Bitmap(150, 150);
    var g = Graphics.FromImage(bmp);
    g.Clear(Color.Blue);
    var pictureBox = new PictureBox
    {
        Parent = this,
        Width = 200,
        Height = 200,
        BorderStyle = BorderStyle.FixedSingle
    };
    pictureBox.Image = bmp;
    // Создаём панель. Обратите внимание: её родитель - pictureBox
    var panel = new Panel
    {
        Parent = pictureBox,
        BackColor = Color.FromArgb(100, Color.Red),
        //Dock = DockStyle.Fill
        Size = pictureBox.Image.Size
    };
}

Color.FromArgb(100, Color.Red) - тут создаётся цвет с коэффициентом прозрачности 100 (может быть от 0 до 255; попробуйте поиграться с ним).

Если картинка занимает всю площадь пикчабокса, то у панели можно задать свойство Dock = DockStyle.Fill (размер при этом не задаём). В противном случае, задаём такие же размеры, как у изображения.

READ ALSO
как сбросить цвет окрасившейся ячейки в datagrid?

как сбросить цвет окрасившейся ячейки в datagrid?

Есть datagrid, которвй при поиске выделяет строку , но пои ппюовторном поиске предыдущая строка не сбрасывает цвет

214
Каскадное связывание combobox и enum

Каскадное связывание combobox и enum

На входе : два combobox и четыре enum

237
Как правильно перевести процедуру Delphi в функцию c#?

Как правильно перевести процедуру Delphi в функцию c#?

Имеется вот такая процедура чтения строки из бинарного файла(Delphi):

223
Десериализация строки

Десериализация строки

Здравствуйте! Подскажите как десериализовать строку типа

444