Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2008, 06:01   #1
st01en
Пользователь
 
Регистрация: 06.02.2008
Сообщений: 33
По умолчанию движение точки на Canvas

Будьте добры, подскажите как реализовать движение точки нарисованой на Canvas?
Как вариант рисовать следующую точку и рисовать точку цвета фона на координатах предыдущей(либо полностью очищать Canvas и рисовать точку на новых координатах).
Но мне кажется что это довольно таки некрасивый подход. Тем более если точка не одна а десятки а то и сотни?

Для чего это: есть n-ое количество объектов с координатами которые перемещаются, нужно это перемещение каким-либо образом отображать, т.е. мне вообщем-то не обязательно иммено Canvas использовать, просто мне кажется что рисование на нем не очень требовательно к ресурсам, а это для меня важно т.к. реализация обработки остальных свойств объектов у меня получилась довльно требовательная

Спасибо.
st01en вне форума Ответить с цитированием
Старый 06.02.2008, 06:41   #2
shepelin
Пользователь
 
Аватар для shepelin
 
Регистрация: 11.12.2007
Сообщений: 94
По умолчанию

Попробуйте OpenGL или DirectX
-Сколько будет 2х2=4?
-TRUE
shepelin вне форума Ответить с цитированием
Старый 06.02.2008, 07:10   #3
st01en
Пользователь
 
Регистрация: 06.02.2008
Сообщений: 33
По умолчанию

хм, я вообщем то не программер, я только учусь, неужели это будет менее требовательно по ресурсам.
чет такая реализация ассоциируется со стрельбой из пушки по воробьям

Отображение процесса движения не основная задача приложения и я как бы даже собираюсь сделать ее выключеной по умолчанию, но вот наличие такой фишки обязательно.
st01en вне форума Ответить с цитированием
Старый 06.02.2008, 08:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
неужели это будет менее требовательно по ресурсам.
Имхо - да. Как по мне работа с канвасом ни чуть не проще работы с OGL или DirX, можно даже применить для OGL надстройки типа GLScene, тогда проще будет программировать отображение, и тормоза в OGL по сравнению с канвасом как мне кажется меньше
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.02.2008, 09:32   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Если это не игра то лучше на канве. И не тормозит она, если конечно массовых баталий не рисовать на ней. Что за программа то?
Рисование на канве требовательно(смотря что рисовать, вспомогательная графика к программе это обычно не нагрузка) к процессору. DX, OGL используют видеокарту.
Канва не подходит в случаях, где действительно сложная графика, ее много или нужны спецэффекты.

Если точек сотни однозначно лучше очищать фон и рисовать по новой. При рисовании точки идет такой же доступ к канве что и для заливки целиком, нет никакого смысла их по одной стирать.
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)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 06.02.2008 в 09:43.
mutabor вне форума Ответить с цитированием
Старый 06.02.2008, 11:11   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от mutabor
При рисовании точки идет такой же доступ к канве что и для заливки целиком, нет никакого смысла их по одной стирать.
Но есть одна проблемка, рисунок мерцает. Я выхожу из нее путем рисования на TBitmap в памяти, а потом загружаю его на канву
Sibedir вне форума Ответить с цитированием
Старый 06.02.2008, 12:16   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Но есть одна проблемка,
Тогда может стоит рисовать функами АПИ а не средствами канвы делфовой?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.02.2008, 12:26   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от Stilet
Тогда может стоит рисовать функами АПИ
Мерциния при перерисовке будут в любом случае, когда затираешь предидущий кадр. Чтобы не было мерцания нужно рисовать поверх старого. Я делаю вот так:
Точки.zip
Главное:
1. Рисуешь на BM: TBitmap
2. При перерисовке выполняешь Canvas.Draw (0, 0, BM);

Последний раз редактировалось Sibedir; 06.02.2008 в 12:30.
Sibedir вне форума Ответить с цитированием
Старый 06.02.2008, 13:37   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Если я правильно понял топикстартера, то задача сводится к:
1. С помощью GetPixel запомнить старый цвет точки.
2. С помощью SetPixel поставить новую точку.
3. По мере необходимости вернуть с помощью SetPixel старую точку и начать с п.1

Зачем целые битмапы туда-сюда гонять мне не совсем ясно... Если точек, как пишет автор, сотни, то проще держать отдельно оригинал и восстанавливать точки с него. Всегда можно проверить, какой способ быстрее.
B_N вне форума Ответить с цитированием
Старый 06.02.2008, 13:50   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Да я не битмамы гоняю. Я рисую все на одном большом битмапе, а потом его содержимое копирую на канву процедурой Draw. С точки зрения скорости это наверное еще быстрее, ну уж точно не медленнее. Я ведь рисую в памяти, а на экран вывожу все целиком, а не по одной точке.

Последний раз редактировалось Sibedir; 06.02.2008 в 13:53.
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть Дикий Помощь студентам 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