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