![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Собственно сабж. Использовать нужно элемент Canvas.
Даже не представляю как это можно выполнить. Помогите пожалуйста. Последний раз редактировалось fuzo, 11.11.2010 в 17:06. |
#2
|
||||
|
||||
![]() Что-бы это заработало, вам надо сделать простейшую трансформацию. Скажем линия в координатах 50,50,60,100 должна быть перемещена в новые координаты 50,50,90,100 за 10 шагов. Вы разбиваете траекторию перемещения на 10 шагов, для каждого из шагов получаете новое положение линии. Последовательно выводите линию в новых координатах убирая ее из старых.
Вот когда вы сделаете это, тогда уже все остальное сделать будет элементарно. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 11.11.2010 в 16:35. |
#3
|
|||
|
|||
![]() а как правильно задать эти кординаты для конваса?
какой командой Последний раз редактировалось fuzo, 11.11.2010 в 16:57. |
#4
|
||||
|
||||
![]() Код:
Рисование на канвасе? Canvas.MoveTo - переместить по нужным координатам. Canvas.LieTo - нарисовать линию. Помогаю за Спасибо ![]() |
#5
|
|||
|
|||
![]() вот с горем пополам нарисовал этого человечка
Код:
Canvas.Brush.Color:=clRed; Canvas.Ellipse(15,15,50,50); Canvas.MoveTo(30,50); Canvas.LineTo(30,130); Canvas.MoveTo(30,130); Canvas.LineTo(20,170); Canvas.MoveTo(30,130); Canvas.LineTo(40,170); Canvas.MoveTo(10,80); Canvas.LineTo(50,80); Но как его заставить двигаться без понятия ![]() |
#6
|
||||
|
||||
![]() посмотри вот этот код, в качестве примера:
man_walk.zip |
#7
|
|||
|
|||
![]() что то этот пример не запускается, а в коде не очень понятен ход работы..
|
#8
|
||||
|
||||
![]() Цитата:
Цитата:
Код:
MoveTo(X1, 50); // рисуется туловище LineTo(X1, 100); переменная Х2 определяет положение рук и ног относительно туловища: Код:
//рисуются руки: MoveTo(X1 - X2, 100); //левая LineTo(X1, 50); LineTo(X1 + X2, 100); //правая, аналогично с ногами Последний раз редактировалось ryderx34, 13.11.2010 в 12:21. |
#9
|
|||
|
|||
![]() создаю новый проект копирую код, добавляю таймер. Но почемуто на форме ничег оне происходит
![]() Сделал по своему, пока без движения ног только руки. Но почемуто цикл не выполняется. В чём ошибка? ( вернее он выполняется но только в 2 шага, а затем по кругу с добавлением шага не идёт, а просто повторяетя). Код:
procedure TForm1.Timer2Timer(Sender: TObject); var i,n,h:integer; begin with PaintBox1 do begin h:=0; n:=1; for i:=1 to n do h:=h+1; n:=n+1; Canvas.Brush.Color:=clRed; Canvas.Ellipse(15+h,15,50+h,50); Canvas.MoveTo(30+h,50); Canvas.LineTo(30+h,130); Canvas.MoveTo(30+h,130); Canvas.LineTo(20+h,170); Canvas.MoveTo(30+h,130); Canvas.LineTo(40+h,170); Canvas.MoveTo(10+h,80); Canvas.LineTo(50+h,80); i:=2; Sleep(400); refresh; i:=3; Canvas.Brush.Color:=clRed; Canvas.Ellipse(25+h,15,60+h,50); Canvas.MoveTo(40+h,50); Canvas.LineTo(40+h,130); Canvas.MoveTo(40+h,130); Canvas.LineTo(30+h,170); Canvas.MoveTo(40+h,130); Canvas.LineTo(50+h,170); Canvas.MoveTo(40+h,80); Canvas.LineTo(20+h,100); Canvas.MoveTo(40+h,80); Canvas.LineTo(60+h,100); Sleep(400); refresh; end; end; |
#10
|
||||
|
||||
![]() Цитата:
Вот я сделал всё в виде одной процедуры, так будет проще: Код:
procedure WalkingMan(Canvas: TCanvas; Width: Integer; var X1, X2, I: Integer); begin if X1 < Width then X1 := X1 + 20 else X1 := 20; if I < 7 then Inc(I) else I := 0; case I of 0:X2 := 20; 1:X2 := 15; 2:X2 := 10; 3:X2 := 5; 4:X2 := 0; 5:X2 := 5; 6:X2 := 10; 7:X2 := 15; end; with Canvas do begin FillRect(Canvas.ClipRect); Ellipse(X1 - 20, 10, X1 + 20, 50); MoveTo(X1, 50); LineTo(X1, 100); MoveTo(X1 - X2, 100); LineTo(X1, 50); LineTo(X1 + X2, 100); MoveTo(X1 - X2, 150); LineTo(X1, 100); LineTo(X1 + X2, 150); end; end; Код:
var Form1: TForm1; A, B, C: Integer; Код:
procedure TForm1.Timer1Timer(Sender: TObject); begin WalkingMan(Form1.Canvas, Form1.Width, A, B, C); end; Последний раз редактировалось ryderx34, 13.11.2010 в 15:43. |
#11
|
|||
|
|||
![]() Всё СПАСИБО. Разобрался
![]() |