Как сделать слегка окрашенную кнопку в C#

Сделать отображение кнопки изображение под ним в C# показывает, как заставить кнопку отображать снимок, который лежит под ним. К сожалению, кнопка только добавляет границу как украшение, и граница не имеет очень трехмерного вида, поэтому ее может быть трудно увидеть. Также может быть трудно увидеть текст кнопки над изображением.

Этот пример изменяет метод SetButtonBackground, чтобы вы могли добавить серый цвет к изображению кнопки. Это значительно облегчает просмотр.

Следующий код показывает измененную версию метода SetButtonBackground. Новый код выделен синим цветом.

// Сделать кнопку отображением части
// Изображение PictureBox, которое находится под ним.
private void SetButtonBackground(PictureBox pic, Button btn, byte alpha)
{
    // Получить смещение между PictureBox
    // и верхние левые углы кнопки.
    Point pic_pt = new Point(0, 0);
    pic_pt = pic.PointToScreen(pic_pt);
    Point btn_pt = new Point(0, 0);
    btn_pt = btn.PointToScreen(btn_pt);
    int x_offset = btn_pt.X - pic_pt.X;
    int y_offset = btn_pt.Y - pic_pt.Y;

    // Получаем размер кнопки.
    int wid = btn.ClientSize.Width;
    int hgt = btn.ClientSize.Height;

    // Сделайте растровое изображение, чтобы удерживать изображение кнопки.
    Bitmap bm = new Bitmap(wid, hgt);
    using (Graphics gr = Graphics.FromImage(bm))
    {
        // Прямоугольник назначения.
        Rectangle dest_rect = new Rectangle(0, 0, wid, hgt);

        // Исходный прямоугольник.
        Rectangle src_rect = new Rectangle(x_offset, y_offset, wid, hgt);

        // Скопируем изображение под кнопкой в ​​растровое изображение.
        gr.DrawImage(pic.Image, dest_rect, src_rect, GraphicsUnit.Pixel);

        // Нарисуем серое изображение.
        Color color = Color.FromArgb(alpha, Color.White);
        using (Brush brush = new SolidBrush(color))
        {
            gr.FillRectangle(brush, dest_rect);
        }
    }

    // Сделать кнопку отображать изображение.
    btn.Image = bm;
}

Метод работает в основном так же, как и раньше. После того, как он копирует часть изображения под кнопкой в новое изображение, метод рисует полупрозрачный белый прямоугольник над изображением. Он использует параметр alpha, чтобы определить, насколько непрозрачен прямоугольник. Используйте большее значение alpha (ближе к 255), чтобы сделать кнопку более серой. Используйте небольшие значения (близкие к 0), чтобы сделать кнопку менее серой.

Источник: http://csharphelper.com/blog/2017/11/make-button-display-picture-beneath-slightly-grayed-c/

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