Chief-NET

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Chief-NET » Паскаль в среде Borland Delphi » Динамическое создание объектов


Динамическое создание объектов

Сообщений 1 страница 20 из 21

1

Проблема в том, что нужно научить программу создавать новые объекты (TImage) с новыми именами, не прописанными в переменных.

2

Не знаю, чем это поможет, но

Надеюсь поможет?

3

Спасибо, немного помогло, но, похоже, создавать объекты с не прописанными заранее именами невозможно.

4

Возможно, можно засыпать форму едитами или чем либо даже если их нет на форме, все основные свойства заполняются по процедуре
obj:=Tobject.create;
пробовал с Timage, не вышло, а почему бы не использовать TimageLIst

5

А у меня получилось!!! Вот только сейчас сделал: нужно имейджам имена задавать прямо в программе и тогда все классно получается, ура, теперь можно писать универсальный (в разумных пределах) эмулятор окна сообщений.

6

Теперь другой вопрос по теме: Можно ли динамически задавать компонентам события?

Допустим, с теми же TImage: нужно, чтобы при создании каждому новому объекту на событие OnClick (или любое другое) можно было назначить какую-либо процедуру. У меня пока не получается :(.

7

Всё, разобрался, просто процедуру надо было в описание класса включить.

8

Еще один вопрос: каким способом лучше заполнять image графикой?
Раньше я использовал bmp, который генерировался на лету.
Сейчас картинка рисуется попиксельно на холсте через свойство цвета: image1.canvas.pixels[x,y]:=color.

Подскажите, если кто знает более быстрый способ.

9

Сейчас картинка рисуется попиксельно на холсте через свойство цвета: 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)

10

Во, спасибо!
Я как раз думал, что должен быть способ заранее готовить изображение в памяти, а потом выводить на экран.

11

Да, чуть не забыл, перед тем как рисовать пиксели - задай размер изображения, иначе ошибка выскочит.

Сначала создаёшь картинку:
Bitm:=TDIB.Create;
если юзаешь TBitmap, то:
Bitm:=TBitmap.Create;

Потом задаёшь размеры:
Bitm.Width:=W;
Bitm.Height:=H;

После этого можно рисовать пиксели.

Отредактировано TrickZter (2012-01-28 10:32:18)

12

Это само собой :) , с image ведь та же байда, если его создавать без заданных размеров, то потом пиксели рисовать не получится (а если и получится то выглядеть это будет БЭЭЭ). Но, всё-равно, спасибо.

13

А, вот оно что :-) , ты не смог залить сюда файл, потому что он не zip, файлы .rar форум не принимает. Хз почему.

14

Не, у меня вообще нет кнопки прикрепить файл :)

15

Что-то я не заметил разницы в скорости выполнения после использования DIB, наверно, на моем iCore7 8x2.8GHz это роли не играет, нужно достать из закромов старенький P-166 и на нем погонять ;)

А насчет файлов: там есть пункт "Загрузка файла:" и кнопка "Обзор..."

16

А, так это только в быстром ответе? Я быстрым ответом никогда не пользуюсь, а в обычном прикрепить файл невозможно :)

17

off: Я могу это перенести и в обычный ответ. Эх... Опять заморачиваться... <_<

18

Отнюдь, в форме ответа под это дело целый раздел уже отведен:

Отредактировано alex_231 (2012-01-31 07:41:01)

19

Нету у меня такого:

http://img560.imageshack.us/img560/4052/53452138.png

20

:blink:
Эво как...

Зато я теперь ощутил эффект от использования DIB: при включении его в процесс редактирования тайлов время отрисовки немного уменьшилось: раньше отрисовка заканчивалась, когда я отпускал кнопку мыши после клика, теперь отпустить не успеваю :)


Вы здесь » Chief-NET » Паскаль в среде Borland Delphi » Динамическое создание объектов