Сделайте кнопку с картинкой под ней в C#

В этом примере кнопка отображает копии изображения, на котором она сидит, и, похоже, кнопка является частью основного изображения.

Ключом к этому примеру является следующий метод SetButtonBackground.

// Сделать кнопку отображением части
// Изображение PictureBox, которое находится под ним.
private void SetButtonBackground(PictureBox pic, Button btn)
{
    // Получить смещение между 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);
    }

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

Метод начинается с использования метода PointToScreen, чтобы определить, где находятся верхние левые углы кнопки PictureBox и . Это дает относительное смещение между двумя элементами управления в пикселях.

Затем код получает размер кнопки, делает его Bitmap и создает связанный с ним объект Graphics.

Далее, метод создает структуры Rectangle для определения исходной и целевой областей в изображении элемента управления PictureBox, который должен быть скопирован на кнопку. Затем он использует метод DrawImage объекта Graphics для копирования этой части изображения PictureBox в новый Bitmap. Он заканчивается тем, что Button отображает новый Bitmap.

Источник: http://csharphelper.com/blog/2017/10/make-a-button-display-the-picture-beneath-it-in-c/

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