Прозрачные изображения кнопок в C#

Кажется, я продолжаю писать эту программу, потому что мне нужно делать изображения кнопок довольно часто. Я хотел использовать простое изображение с прозрачным фоном для изображения кнопки. К сожалению, MSPaint не знает, как сохранять изображения с прозрачным фоном. К счастью, C# делает.

В этом примере показано, как показано изображение, и сохраняет его в файл с прозрачным фоном. Чтобы сделать другие изображения, вам нужно изменить следующий обработчик события Form_Load, чтобы нарисовать что-то еще.

// Растровое изображение.
Bitmap TheBitmap = new Bitmap(16, 16);

// Нарисуем изображение для сохранения.
private void Form1_Load(object sender, EventArgs e)
{
    // Установите изображение, которое мы рисуем.
    picCanvas.SizeMode = PictureBoxSizeMode.AutoSize;
    
    // Создаем растровое изображение.
    TheBitmap = new Bitmap(16, 16);

    using (Graphics gr = Graphics.FromImage(TheBitmap))
    {
        gr.SmoothingMode = SmoothingMode.AntiAlias;

        // Дайте ему прозрачный фон.
        gr.Clear(Color.Transparent);

        // Привлечь.
        using (Pen the_pen = new Pen(Color.Blue, 3))
        {
            the_pen.EndCap = LineCap.Round;
            the_pen.StartCap = LineCap.Round;
            the_pen.LineJoin = LineJoin.Round;

            // Вниз расширитель.
            Point[] points =
            {
                new Point(3, 2),
                new Point(8, 7),
                new Point(13, 2),
            };
            gr.DrawLines(the_pen, points);

            for (int i = 0; i < points.Length; i++)
            {
                points[i].Y += 6;
            }
            gr.DrawLines(the_pen, points);

            //// Расширение расширителя.
            // Точка [] points =
            // {
            // новая точка (3, 13),
            // новая точка (8, 8),
            // новая точка (13, 13),
            //};
            //gr.DrawLines (the_pen, points);

            // for (int i = 0; i & lt; points.Length; i ++)
            // {
            // точки [i] .Y - = 6;
            //}
            //gr.DrawLines (the_pen, points);
        }
    }

    // Отображение результата.
    picCanvas.Image = TheBitmap;
}

Обработчик событий Load устанавливает свойство SizeMode элемента управления PictureBox в AutoSize, чтобы он сам по себе соответствовал картина. Затем он создает 16-разрядный и 16-разрядный растровый и Graphics объекты для рисования на нем. Он устанавливает свойство SmoothingMode объекта Graphics объекта AntiAlias, чтобы программа произвела ровный результат.

Далее код очищает растровое изображение цветом Transparent. Это придает изображению прозрачный фон.

Затем код выполняет фактический чертеж. В этом случае код делает синюю ручку шириной три пикселя. Он устанавливает свойства StartCap, EndCap и LineJoin для пера, чтобы любые строки, которые он рисует, имели округленные концы и углы. Затем программа использует это перо, чтобы нарисовать две фигуры шеврона вниз. (Комментированный код рисует две направленные вверх формы.)

Код заканчивается отображением полученного изображения.

Если вы откроете меню «Файл» и выберите «Сохранить как», программа отобразит диалог сохранения файла. Если вы выберете файл и нажмите «Сохранить», программа сохранит изображение, вызвав метод SaveBitmapUsingExtension, описанный в сообщении Сохранить изображения в соответствующем формате в зависимости от расширения имени файла в C# . Более подробную информацию см. В коде и этом сообщении.

Источник: http://csharphelper.com/blog/2017/08/make-transparent-button-images-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Adblock
detector