При прокрутке изображения в браузере с помощью полос прокрутки - изображение прокручивается быстро и плавно. С другой стороны, создавая плотный цикл с Graphics.DrawImage, увеличивая X-координату местоположения на 1 каждую итерацию, возвращается медленное движение. (Это также несколько отрывисто даже после создания управления DoubleBuffered
.)Прокрутка изображения быстро и плавно
Как получить быстрый рендеринг, например, в браузере?
EDIT
void DoNow()
{
Rectangle rec1 = new Rectangle(Point.Empty, panel1.BackgroundImage.Size);
Rectangle rec2 = new Rectangle(Point.Empty, panel1.BackgroundImage.Size);
using (Graphics g = Graphics.FromImage(panel1.BackgroundImage))
{
for (int i = 0; i < 100; i++)
{
rec2.Location = new Point(rec2.Location.X + 1, rec2.Location.Y);
g.DrawImage(image, rec1, rec2, GraphicsUnit.Pixel);
panel1.Refresh();
}
}
}
Не видя своего кода, вы не можете ответить на свой вопрос (который также слишком широк). Довольно просто реализовать быструю прокрутку (даже для огромных изображений), пока она реализована эффективно. Увеличение позиции на 1 пиксель за перемещение полосы прокрутки, вероятно, неверный подход - вам нужно полагаться на отношение видимого и скрытого размера изображения. – xxbbcc
@xxbbcc Код имеет только - 'g.DrawImage (образ, rec1, rec2, GraphicsUnit.Pixel);' и 'panel1.Refresh();'. Без него ничего не обновится. Остальное просто создает «Графика» и цикл. Увеличение на более чем 1 было слишком резким, чтобы даже считаться. – ispiro
«Создание« Графика »... вы сами создаете графический объект? Вы не должны этого делать, он должен быть предоставлен вам через аргументы события «Paint». – Anthony