У меня есть следующее изображение шаблона в качестве объекта Bitmap. Это изображение в соответствии с пользовательскими данными.
Высота = (16-желтый, 16-зеленый, 28-желтый, 28-зеленый) и ширина = 150 пикселей
Я хочу нарисовать это изображение 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;
}
}
Любые предложения по рисованию требуют только часть изображения. Заранее спасибо.