|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.02.2008, 08:37 | #21 | |||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
2 mutabor
Цитата:
2 B_N Не судите строго, но поймите меня правильно. Честное слово, не врублюсь. Вот почему у вас первый цикл (там где вы большой битмап рисуете) аж 100 раз повторяется. Эт зачем вам понадобилось фон 100 раз перерисовывать. Вообщето он 1 раз рисуется. Цитата:
Цитата:
Теперь зачем нужен дополнительный битмап в памяти. Чтобы небыло мерцания. Короче вот пример: Точки.zip Форма 1 - рисует на битмапе черный квадрат - по циклу рисует на битмапе белые точки - копирует битмап на форму Форма 2 - по циклу рисует на битмапе черные точки (закрашивает) - по циклу рисует на битмапе белые точки - копирует битмап на форму Форма 3 - по циклу рисует на форме черные точки (закрашивает) - по циклу рисует на форме белые точки Можите не боятся запускать сразу EXE, вроде вирусов нет. Но лучше все-таки посмотреть исходник. В Unit1 константа C отвечает за кол-во точек. На панельках выводится время отрисовки одного кадра. В примере рисуются точки. Это самый примитивный пример. Если станете рисовать движущиеся фигуры (круги, прямоугольники), то цикл закраски фона увеличится, а вот в варианте 1 ничего менять не надо. Обратите внимание на мерцание последней формы - неизбежный результат пеперисовки непосредственно на экране. И последнее, сможите нарисовать такое же с закраской фона по частям. Линии.zip Думаю нет. Хотя объектом может быть всего 10. А если заливать фон на экране, то будет мерцать. Так что придется рисовать в памяти, а уж потом на экран помещать. ЗЫ: С нетерпением жду ваших ответов. Желательно с примерами. И маленькая просьба, если можно у меня Си на работе нет и я его вообще не знаю. Если можно на Делфи. Хотя ладно, си так си. Просто возможно наше непонимение и возникло от того, что на Си и на Делфи методы рисования реализованы по разному. Хотя наврятли, в конечном счете всеравно рисует WinAPI. |
|||
08.02.2008, 08:41 | #22 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
К вопросу о рисовании в памяти:
Сравним.zip Последний раз редактировалось Sibedir; 08.02.2008 в 12:01. |
09.02.2008, 11:32 | #23 | ||
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Цитата:
Цитата:
Да и ОС окна перерисовывает по этому принципу. Вам бы понравилось если бы она подтормаживала, из-за того что разработчики забили на это болт, размышляя так - пускай покупают процессор помощнее.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
||
09.02.2008, 11:55 | #24 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Посмотрел ваш код... вот получше будет ))) форма один
Код:
|
09.02.2008, 13:54 | #25 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
2 mutabor
Вы совершенно правы. Я говорю о конкретном примере, где нужно нарисовать точки. В задачах посложнее нужно использовать специальные технологии. А новичкам об этих технологиях знать не надобно. Я вот не знаю ничего об DirectX и ничего живу. Ну это мое мнение, я не настаиваю. Просто хочится помочь человеку, который только что начал изучать вопрос рисования, поделится своим опытом новичка. Чтобы решить задачу достаточно хорошо, а не забивать голову человеку лишними вопросами. Когда мы новички подрастем, то постепенно перекочуем из этой темы в тему "Создание и обсуждение игр", где рассматриваются вопросу OpenGL и DirectX. Цитата:
Думаю так. Но опять же не настаиваю. Это уже вопрос не из области программирования 2 BOBAH13 Спасибо, BOBAH13. Вроде понятно как это работает. Но только один вопрос. Неврублюсь, почему это работает дольше чем в моем примере. Замеряю время только от начала цикла до конца: Код:
В моем же примере: Код:
|
|
09.02.2008, 14:59 | #26 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Наверное из-за получения данных ClientWidth, ClientHeight... ну точно не из-за операции с памятью, я думаю это не должно ставить под сомнения, что она быстрей чем SetPixel
|
09.02.2008, 15:28 | #27 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Точно, а я сразу и не заметил.
Во чё я придумал , зацените: Точки 1.zip Тут аж 2 битмапа в пямяти, но работает это быстрее. А вообще строка Код:
Последний раз редактировалось Sibedir; 09.02.2008 в 15:32. |
09.02.2008, 15:33 | #28 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Fon_BM.Canvas.Rectangle (0, 0, W, H); это рисование прямоугольника, вам надо наверное для отчистки Fon_BM.Canvas.FillRect(Rect(0, 0, W, H));
|
09.02.2008, 15:36 | #29 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Это уже не принципиально, так как происходит лишь при изменении размеров, а не 25 раз в секунду.
|
09.02.2008, 15:40 | #30 | |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть | Дикий | Помощь студентам | 7 | 12.05.2008 17:57 |
Принадлежность точки | UnFaithful | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 08.01.2008 06:16 |
Помогите рассчитать положение и движение точки N на отрезку DK | Stark[SG!] | Помощь студентам | 8 | 14.12.2007 10:08 |
Блокировка точки !! | ***СкаЙ*** | Помощь студентам | 1 | 13.06.2007 14:14 |
Help!!!Движение точки по поверхности сферы | alex23xandr | Помощь студентам | 4 | 20.05.2007 14:45 |