VT » 29.06.2006 (Чт) 0:40
D8M
Чистый псет дает ~36 000 fps. Так что влиять на производительность катастрофически он не должен. А влияет. Отсюда выводы.
Кроме того. Если псет убрать (а рефреша у меня нигде не было), получается:
cls - 266 000 fps. Я не думаю, что с такой скоростью возможно отрисовывать размер 600*600. Если считать, что ОдинПиксель-ОдинТакт, то тактовая частота как минимум 95 Гигагерц. А у меня в процессоре их всего 1.7.
Есть и другая бяка. Если тем же методом прикинуть частоту по скорости работы .line, получается 2.8GHz, что тоже подозрительно и говорит от том, что так прикидывать не совсем верно.
По этому я и хочу сказать, что при вызове .cls реальной отрисовки не происходит.
Есть еще интересное явление. Если создать очень большой PictureBox, со включенным AutoRedraw, то при его создании ничего плохого не происходит. И при .cls - тоже. А вот при вызове pset возникнет ошибка Can't create autoredraw image. Ну, конечно, picturebox должен иметь действительно большие размеры. Думаю, 8000*8000 должнно хватить, вообще зависит от компа.
И еще.
mfrm.Image.Handle меняется после вызова .cls
И еще. Доведу дело до абсурда: проверю на оч. большом рисунке.
Скорость работы одинокого .cls одинакова при размерах 100*100 и 4000*4000. Правда, для .autoredraw=false это не верно - там зависит.
А метод line в применении к picturebox размером 4000*4000 дает уже всего 10fps, что говорит о том, что отрисовка действительно происходит. А cls+pset дают лишь 2,5fps при этом же размере (видимо падает, так как приходится еще и выделять память каждый раз).