Проблема в том, что нужно научить программу создавать новые объекты (TImage) с новыми именами, не прописанными в переменных.
Динамическое создание объектов
Сообщений 1 страница 20 из 21
Поделиться22006-04-03 17:09:48
Не знаю, чем это поможет, но
Поделиться32006-04-04 10:16:23
Спасибо, немного помогло, но, похоже, создавать объекты с не прописанными заранее именами невозможно.
Поделиться42006-04-05 11:22:30
Возможно, можно засыпать форму едитами или чем либо даже если их нет на форме, все основные свойства заполняются по процедуре
obj:=Tobject.create;
пробовал с Timage, не вышло, а почему бы не использовать TimageLIst
Поделиться52006-04-05 11:41:18
А у меня получилось!!! Вот только сейчас сделал: нужно имейджам имена задавать прямо в программе и тогда все классно получается, ура, теперь можно писать универсальный (в разумных пределах) эмулятор окна сообщений.
Поделиться62011-12-22 07:37:04
Теперь другой вопрос по теме: Можно ли динамически задавать компонентам события?
Допустим, с теми же TImage: нужно, чтобы при создании каждому новому объекту на событие OnClick (или любое другое) можно было назначить какую-либо процедуру. У меня пока не получается .
Поделиться72011-12-23 13:17:06
Всё, разобрался, просто процедуру надо было в описание класса включить.
Поделиться82012-01-28 07:54:41
Еще один вопрос: каким способом лучше заполнять image графикой?
Раньше я использовал bmp, который генерировался на лету.
Сейчас картинка рисуется попиксельно на холсте через свойство цвета: image1.canvas.pixels[x,y]:=color.
Подскажите, если кто знает более быстрый способ.
Поделиться92012-01-28 09:10:44
Сейчас картинка рисуется попиксельно на холсте через свойство цвета: image1.canvas.pixels[x,y]:=color.
Не, конечно, так рисовать - не дело. Рисовать надо в памяти, а уже потом выводить на экран изображение целиком.
Я делаю так:
Var Bitm: TDIB; //........................... Bitm:=TDIB.Create; //........................... Bitm.Pixels[X,Y]:=Color; //........................... Image1.Canvas.Draw(0,0,Bitm);
Вместо TDIB можно заюзать стандартный TBitmap, но через него будет чуток медленнее.
Блин, как тут файлы прикреплять?
Залил DIB компонент на залил.вру:
http://zalil.ru/32594039
Что ещё удобно в DIB'е - это непосредственный доступ к индексам цветов и к палитре. Например в моём втором LZ77Restructor'е при изменении палитры я не перерисовываю пиксели картинки, а лишь меняю палитру. Что тоже очень положительно сказывается на скорости.
Отредактировано TrickZter (2012-01-28 09:36:43)
Поделиться102012-01-28 10:12:29
Во, спасибо!
Я как раз думал, что должен быть способ заранее готовить изображение в памяти, а потом выводить на экран.
Поделиться112012-01-28 10:30:04
Да, чуть не забыл, перед тем как рисовать пиксели - задай размер изображения, иначе ошибка выскочит.
Сначала создаёшь картинку:
Bitm:=TDIB.Create;
если юзаешь TBitmap, то:
Bitm:=TBitmap.Create;
Потом задаёшь размеры:
Bitm.Width:=W;
Bitm.Height:=H;
После этого можно рисовать пиксели.
Отредактировано TrickZter (2012-01-28 10:32:18)
Поделиться122012-01-28 12:17:45
Это само собой , с image ведь та же байда, если его создавать без заданных размеров, то потом пиксели рисовать не получится (а если и получится то выглядеть это будет БЭЭЭ). Но, всё-равно, спасибо.
Поделиться132012-01-28 13:58:34
А, вот оно что , ты не смог залить сюда файл, потому что он не zip, файлы .rar форум не принимает. Хз почему.
Поделиться142012-01-28 14:14:48
Не, у меня вообще нет кнопки прикрепить файл
Поделиться152012-01-30 07:56:00
Что-то я не заметил разницы в скорости выполнения после использования DIB, наверно, на моем iCore7 8x2.8GHz это роли не играет, нужно достать из закромов старенький P-166 и на нем погонять
А насчет файлов: там есть пункт "Загрузка файла:" и кнопка "Обзор..."
Поделиться162012-01-30 17:30:34
А, так это только в быстром ответе? Я быстрым ответом никогда не пользуюсь, а в обычном прикрепить файл невозможно
Поделиться172012-01-31 02:08:01
off: Я могу это перенести и в обычный ответ. Эх... Опять заморачиваться... <_<
Поделиться182012-01-31 07:40:11
Отнюдь, в форме ответа под это дело целый раздел уже отведен:
Отредактировано alex_231 (2012-01-31 07:41:01)
Поделиться192012-01-31 08:49:06
Нету у меня такого:
[реклама вместо картинки]
Поделиться202012-02-01 07:37:35
Эво как...
Зато я теперь ощутил эффект от использования DIB: при включении его в процесс редактирования тайлов время отрисовки немного уменьшилось: раньше отрисовка заканчивалась, когда я отпускал кнопку мыши после клика, теперь отпустить не успеваю