Увеличьте и прокрутите изображение, нарисованное на C#

Эта программа позволяет масштабировать и прокручивать изображение, нарисованное программой. Программа содержит Panel с AutoScale, установленным в true. Внутри панели находится PictureBox с SizeMode, установленным в AutoSize. PictureBox содержит Bitmap, который отображает чертеж.

Основная идея проста. Когда пользователь выбирает масштаб, программа создает Bitmap нужного размера. Он делает объект Graphics для рисования на Bitmap и использует его метод ScaleTransform, чтобы сделать его подходящим масштабированием. Затем код вызывает метод рисования для создания чертежа. Метод рисования использует один и тот же код во всех масштабах, а вызов ScaleTransform делает масштаб результатов правильно.

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

// Установите масштаб и перерисовку.
private void SetScale(float picture_scale)
{
    // Установите масштаб.
    PictureScale = picture_scale;

    // Создаем растровое изображение нужного размера.
    Bm = new Bitmap(
        (int)(PictureScale * WorldWidth),
        (int)(PictureScale * WorldHeight));

    // Создаем объект Graphics для Bitmap.
    // (Если вам нужно использовать это позже, вы можете дать ему
    // class scope, поэтому вам не нужно создавать новый.)
    using (Graphics gr = Graphics.FromImage(Bm))
    {
        // Использовать белый фон
        // (чтобы вы могли видеть, где находится изображение).
        gr.Clear(Color.White);

        // Рисуем плавно.
        gr.SmoothingMode = SmoothingMode.AntiAlias;

        // Масштаб.
        gr.ScaleTransform(PictureScale, PictureScale);

        // Нарисуем изображение.
        DrawImage(gr);
    }

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

Этот код создает Bitmap правильный масштабный размер и связанный с ним объект Graphics. Он вызывает метод ScaleTransform объекта для масштабирования любого последующего чертежа, а затем вызывает метод DrawImage для рисования. Этот метод заканчивается отображением Bitmap в PictureBox программы.

В следующем коде показан метод DrawImage.

// Нарисуем изображение в мировых координатах.
private void DrawImage(Graphics gr)
{
    Rectangle rect;

    rect = new Rectangle(10, 10, 80, 80);
    gr.FillEllipse(Brushes.LightGreen, rect);
    gr.DrawEllipse(Pens.Green, rect);

    rect = new Rectangle(40, 40, 20, 30);
    gr.FillEllipse(Brushes.LightBlue, rect);
    gr.DrawEllipse(Pens.Blue, rect);

    rect = new Rectangle(25, 30, 50, 50);
    gr.DrawArc(Pens.Red, rect, 20, 140);

    rect = new Rectangle(25, 25, 15, 20);
    gr.FillEllipse(Brushes.White, rect);
    gr.DrawEllipse(Pens.Black, rect);
    rect = new Rectangle(30, 30, 10, 10);
    gr.FillEllipse(Brushes.Black, rect);

    rect = new Rectangle(60, 25, 15, 20);
    gr.FillEllipse(Brushes.White, rect);
    gr.DrawEllipse(Pens.Black, rect);
    rect = new Rectangle(65, 30, 10, 10);
    gr.FillEllipse(Brushes.Black, rect);
}

Этот метод использует методы Graphics для рисования смайлика.

Источник: http://csharphelper.com/blog/2015/07/zoom-and-scroll-a-picture-drawn-in-c/

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