| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > скорость отрисовки в цикле |
| Автор: Kirill89 5.3.2007, 11:35 | ||
| Есть сетка, нужно закрасить все true эллементы. DrawSpace - PictureBox Один эллемент трисовывается быстро, но когда поле заполняется, начинает сильно тормозить! Как с этим бороться?! Я постарался по максимуму сократить число цикла m, но при большом поле это не помогает. Может быть чем-то можно заменить этот цикл? Или как-то его оптимизировать?
|
| Автор: daNick 5.3.2007, 13:19 |
| почему бы не прорисовывать не линиями, а сразу прямоугольниками? drawspace.line(i*200,j*200)-((i+1)*200,(j+1)*200),drawplace.forecolor,bf или тебе не подходит вариант с закрашенными прямоугольниками? |
| Автор: cardinal 5.3.2007, 13:24 | ||||||
Ну для начала можно сделать Step 200 для i, j и Step 10 для m и заменить DrawSpace.Line ((i * 200) + (m * 10), j * 200)-((i * 200) + (m * 10), (j + 1) * 200) на
Уже будет гораздо быстрее...
Во первых где эта фунция (выложил бы полностью), а во вторых Grid пишется... |
| Автор: Naghual 5.3.2007, 14:14 |
| Там прикол со свойством AutoRedraw! Если оно True - тогда отрисовка будет занимать ХХХ времени! Выствь его в False, а по окончании рисования, вызывай метод Refresh |
| Автор: Kirill89 5.3.2007, 20:25 | ||
| daNick, да, действительно не подумал. Спасибо - тупить стало меньше намного, но если поле большое, то не спасает. cardinal, пора мне подтягивать свой английский Я ещё кое-что переписал, но всё-равно, нехватает скорости. Есть ещё предложения по оптимизации? Вот новые кусочки:
Naghual, да, если отключить Autoredraw, то скорость заметно вырастает, но это мелькание! Как от него избавиться!? |
| Автор: Naghual 6.3.2007, 00:36 |
| Пожалуйста. Вот http://www.vbaccelerator.com/home/vb/Code/Libraries/Graphics_and_GDI/Flicker_Free_API_Drawing/article.asp , показывающая в примере как избавится от этого досадного эффекта. |
| Автор: Naghual 6.3.2007, 11:33 |
| продумай еще момент с отрисовкой только изменившейся области, а не всего грида |
| Автор: Kirill89 6.3.2007, 13:29 | ||
Точно! У меня было, что при закраске рисует черный квадрат, теперь сделал, что при очистке просто рисует белый Ещё раз спасибо. |
| Автор: Naghual 7.3.2007, 22:07 |
| А что это такое будет - то? |
| Автор: Kirill89 8.3.2007, 13:20 |
На самом деле сразу несколько программ: 1)У меня есть игрушка японские кроссворды, единственный её минус был в том, что для написания нового кроссворда мне много мучится приходилось, а юзеру - попросту заново грузить всё приложение. А это - новый движок, который позволит сделать удобные обновления, в том числе и обновления с сайта программы при помощи самой программы. 2)Я небуду пока-что разглашать, потому что не уверен, что всё получится... Я ещё не раз буду задавать вопросы по этой проге, поэтому потом всё узнаете |
| Автор: Naghual 9.3.2007, 21:29 |
| Kirill89, ясно. Прикольная задумка. Желаю удачи. |
| Автор: Kirill89 9.3.2007, 21:31 |
Спасибо! |