как нарисовать изображение шаблона несколько раз в C# - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть следующее изображение шаблона в качестве объекта Bitmap. Это изображение в соответствии с пользовательскими данными.

Высота = (16-желтый, 16-зеленый, 28-желтый, 28-зеленый) и ширина = 150 пикселей

enter image description here

Я хочу нарисовать это изображение X раз по вертикали в соответствии с пользовательским вводом в Panel. Затем эта панель будет добавлена ​​в FlowLayoutPanel. Теперь, если я рисую целое изображение X раз, когда пользователь изменяет ввод, потребуется много времени для рендеринга всего изображения с повторением. Итак, я думаю о рисовании изображения, когда это необходимо, используя функцию обратного вызова Paint панели. Когда вызывается этот обратный вызов, мы можем определить блок, который нужно визуализировать, используя параметр обратного вызова « PaintEventArgs e » с «e.ClipRectangle».

Теперь моя главная проблема здесь связана с смещение и количество раз изображения для рисования. Как рассчитать это быстро, чтобы мой предварительный просмотр не мерцал во время рисования.

В настоящее время я делаю это следующим образом.

private void preview_panel_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    int y_position = 0;
    foreach (int i in Enumerable.Range(0, stops))
    {
        // unit_bitmap is pattern image to be drawn
        g.DrawImage(unit_bitmap, 0, y_position);
        y_position += unit_bitmap.Height;
    }
}

Любые предложения по рисованию требуют только часть изображения. Заранее спасибо.

...