Инструмент, который создает файлы PNG с прозрачным фоном в C#

Когда вы используете команду «Открыть» меню «Файл», следующий код позволяет вам выбрать файл изображения.

// Изображение.
private Bitmap Bm = null;

// Смещение для отображения изображения.
private const int Offset = 10;

// Открыть файл.
private void mnuFileOpen_Click(object sender, EventArgs e)
{
    if (ofdFile.ShowDialog() == DialogResult.OK)
    {
        try
        {
            Bm = new Bitmap(ofdFile.FileName);
            picImage.ClientSize = new Size(
                Bm.Width + 2 * Offset,
                Bm.Height + 2 * Offset);
            picImage.Visible = true;
            picImage.Refresh();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

В этом коде отображается OpenFileDialog. Если пользователь выбирает файл и нажимает «Открыть», код устанавливает Bm на новый Bitmap, созданный из файла.

Затем программа выравнивает элемент управления picImage PictureBox, чтобы соответствовать Bitmap плюс маржа. Когда код затем обновляет PictureBox, выполняется следующий обработчик события Paint.

// Рисуем картинку.
private void picImage_Paint(object sender, PaintEventArgs e)
{
    if (Bm == null) return;
    e.Graphics.DrawImage(Bm, Offset, Offset);
}

Во время разработки я установил фоновое изображение элемента управления PictureBox в синее облако, показанное на рисунке. Обработчик события Paint рисует Bitmap поверх PictureBox, оставляя маркер вокруг изображения, чтобы вы могли видеть фон.

Если вы нажмете на изображение, следующий код делает пиксели с прозрачным кликом.

// Установите прозрачный пиксель.
private void picImage_MouseClick(object sender, MouseEventArgs e)
{
    // Получить цвет.
    Color color = Bm.GetPixel(e.X - Offset, e.Y - Offset);

    // Сделать этот цвет прозрачным.
    Bm.MakeTransparent(color);

    // Показывать результат.
    picImage.Refresh();
}

В этом коде используется Bitmap класс GetPixel метод, чтобы получить цвет щелкнутого пикселя. Затем он вызывает метод Bitmap объекта MakeTransparent, чтобы сделать все пиксели этого цвета прозрачными. Наконец, код обновляет PictureBox, чтобы вы могли видеть изображение с его новыми прозрачными пикселями.

Последняя часть программы выполняется при выборе команды «Сохранить» в меню «Файл».

// Сохраните файл.
private void mnuFileSave_Click(object sender, EventArgs e)
{
    if (sfdFile.ShowDialog() == DialogResult.OK)
    {
        try
        {
            Bm.Save(sfdFile.FileName, ImageFormat.Png);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

В этом коде отображается SaveFileDialog. Если пользователь выбирает имя файла и нажимает кнопку «Сохранить», программа вызывает метод Сохранить объекта Bitmap), передавая ему параметр Png, чтобы указать, что это должен сохранить Bitmap в PNG-файле.

Программа сохраняет только формат PNG, потому что это единственный формат, который он может использовать, который сохраняет прозрачные пиксели. (Он также обеспечивает достойное сжатие.)

Источник: http://csharphelper.com/blog/2017/01/make-a-tool-that-creates-png-files-with-transparent-backgrounds-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector