![]() |
|
#1
|
|||
|
|||
![]() Встала задача написать что-то вроде мини-флеша, но только на делфи. Идея, какбы, есть но как реализовать - беспонятия
Должно быть по задумкам так: полотно для рисования(image). Инструменты для рисования(speedbutton). Шкала фреймов(stringgrid). Со слоями я работать пока не хочу ибо вообще не знаю как подступиться. Для начала, как я думаю, нужно сделать массив канвасов (каждому канвасу будет соответствовать своя ячейка в шкале фреймов), потом пользователь на каждом кадре рисует, что ему нужно, а потом по нажатию на кнопку по таймеру начинают показываться эти канвасы по-порядку. как-то так. Уважаемые программисты, подскажите пожалуйста как такое реализовать, и вообще реально-ли такое? Заранее спасибо |
#2
|
||||
|
||||
![]() Про спрайты слышал?
Это как мультик, кадры по порядку идут. Только использовать лучше не процедуры Делфи, а все таки ВинАПИ. И рисовать не на канве, а в памяти, а потом из буфера заменять картинку на канве. Смотри в сторону BitBlt http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx В начале был Бит, потом Байт и только потом появилось Слово... |
#3
|
|||
|
|||
![]() к сожалению задание стоит использовать именно процедуры Делфи и рисование на канве(
если знаете, подскажите пожалуйста как создать массив канвасов и с ними поработать именно процедурами делфи. |
#4
|
||||
|
||||
![]() Делаешь картинку как кинолента, длинную. На ней отдельные кадры. Затем выбираешь нужный кадр и отображаешь на канве, что непонятно спрашивай.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
![]() Совсем ничего не понятно.
Для начала, что значит Цитата:
|
#6
|
||||
|
||||
![]() Пердставь себе киноленту. Представил? Вот и создай, для начала, подобное из отдельных рисунков будущего, скажем, мультика.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
|||
|
|||
![]() Всмысле, поочереди подгружать разные картинки в программу?
или я совсем тупица? ![]() |
#8
|
||||
|
||||
![]() Нет, всё это находится уже в памяти, на экран выводишь поочерёдно.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#9
|
|||
|
|||
![]() Можно Вас попросить привести пример, а то я никак себе это не могу представить?
|
#10
|
||||
|
||||
![]() Как пример, такую ленту создаёт ImageList, когда туда добавляешь отдельные картинки. Позволяет выдёргивать изображения по индексу с выводом в нужный канвас.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#11
|
|||
|
|||
![]() допустим это понял. хорошо.
а каким образом тогда создать массив канвасов? |
#12
|
||||
|
||||
![]() Несколько TImage, TPaintBox - уже массив канвасов. Или:
Код:
var Canvas : array of TCanvas; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#13
|
|||
|
|||
![]() хорошо, спасибо.
а как присвоить каждому канвасу массива порядковый номер? |
#14
|
||||
|
||||
![]() Массив уже имеет понятие индекса.
Код:
var I : Integer; begin SetLength(Canvas, 10); // установили 10 элементов в массиве for I := 0 to 9 do Canvas[i] := TCanvas.Create; // создали 10 канвасов Canvas[4] := ... // обратились к 5 элементу массива канвасов Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#15
|
|||
|
|||
![]() ага. спасибо большое за помощь!
и последний вопрос на сегодня: как при помощи таймера их поочерёдно выводить на экран и возможно-ли потом всё это сохранить в формате флеша? *.swf |