![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Алексей |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 19.6.2006 Репутация: нет Всего: нет |
Нужно сделать слайд шоу, чтобы новая картинка замещала старую за счет случайного заполнения пикселей.
Проблема в том, что картинка заполняется не полностью. Все мои попытки это исправить привели лишь к зацикливанию. Заранее спасибо.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Просто случайный Random будет закрашивать нереально долго, потому что будет очень много совпадений. При повторном выборе пикселя, нужно брать соседний, а если он уже выбран, то продолжать двигаться, пока не будет найден тот который еще не брали.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Алексей |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 19.6.2006 Репутация: нет Всего: нет |
А, если не трудно, можно поподробней.
|
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
есть еще вариант, сгенирировать заранее список координат пикселей... естественно в случайном порядке, а потом просто по нему пройтись.... список без повторений генерить очень легко.... для этого нужна 2 списка... 1 - с всевозможными вариантами, а второй пустой,.. Далее просто генерим случайный индекс из 1ого списка, и переводим элемент этого индекса во 2ой список, а из 1ого удаляем.... и так до тех пор, пока в первом списке ничего не останется...
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Заранее неизвестен ни размер экрана, ни размер картинки, потому не катит -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
Alexeis,
а причем тут заранее... мы же эти операции будем производить не заранее... -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Так определись заранее или не заранее. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
или если совпадение то увеличить размер области, переносимой за один раз. Типа сначала красим не пиксели, а круги еденичного диаметра. Если центр округа попал в уже перенесенную точку, то увеличиваем диаметр круга в Х раз. Этот Х подбираем методом тыка или вычисляем из площади битмапа. -------------------- Обижено школьников: 8 |
|||
|
||||
| Алексей |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 19.6.2006 Репутация: нет Всего: нет |
Не могли бы вы чуть чуть набросать свои варианты
|
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
Alexeis,
сорри.... я не то имел ввиду... ну вот например:
-------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
вот пример с простым закрашиванием. Чтобы переделать на смену картинки нужно сравнения canvas.Pixels[x,y]=clRed переделать в проверку перенесена ли уже точка, и написать перенос окружности с битмапа на битмап. Хотя наверное можно заменить на квадрат
img это TImage. Это сообщение отредактировал(а) bems - 21.2.2008, 18:47 -------------------- Обижено школьников: 8 |
|||
|
||||
| Алексей |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 19.6.2006 Репутация: нет Всего: нет |
bems, когда запускаю пишет ошибку.
Это сообщение отредактировал(а) Алексей - 22.2.2008, 00:41 |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
поставь размеры img.picture.bitmap и введи критерий "перенесена вся картинка".
-------------------- Обижено школьников: 8 |
|||
|
||||
| diamondd |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 11.9.2007 Репутация: нет Всего: нет |
может так?
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |