Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/19: Рейтинг темы: голосов - 19, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 16.01.2011
Сообщений: 24
1

Создание анимированного движущегося рисунка

20.05.2011, 23:48. Показов 3548. Ответов 3
Метки нет (Все метки)

Здравствуйте!Помогите,пожалуйста исправить ошибку. Если делать какой либо груг или фигуру выводить то получается, а если задаю фигуру через массив точками то ерунда полная выходит. Задание - создать движение многоугольной фигуры по форме
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
 
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormActivate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
 
var
Form1: TForm1;
x,y:byte;
dx:byte;
dy:byte;
a:array[1..12]of TPoint;
 
implementation
 
{$R *.dfm}
procedure ris;
var a:array[1..12]of TPoint;
b:array[1..12]of TPoint;
i:integer;
begin
with Form1.canvas do begin
pen.Color:=clred;
brush.Color:=form1.color;
b[1].x:=a[1].x;b[1].y:=a[1].y;
b[2].x:=a[2].x;b[2].y:=a[2].y;
b[3].x:=a[3].x;b[3].y:=a[3].y;
b[4].x:=a[4].x;b[4].y:=a[4].y;
b[5].x:=a[5].x;b[5].y:=a[5].y;
b[6].x:=a[6].x;b[6].y:=a[6].y;
b[7].x:=a[7].x;b[7].y:=a[7].y;
b[8].x:=a[8].x;b[8].y:=a[8].y;
b[9].x:=a[9].x;b[9].y:=a[9].y;
b[10].x:=a[10].x;b[10].y:=a[10].y;
b[11].x:=a[11].x;b[11].y:=a[11].y;
b[12].x:=a[12].x;b[12].y:=a[12].y;
 
polygon (b);
 
for i:=1 to 12 do
a[i].x:=a[i].x+dx;
 
b[1].x:=a[1].x;b[1].y:=a[1].y;
b[2].x:=a[2].x;b[2].y:=a[2].y;
b[3].x:=a[3].x;b[3].y:=a[3].y;
b[4].x:=a[4].x;b[4].y:=a[4].y;
b[5].x:=a[5].x;b[5].y:=a[5].y;
b[6].x:=a[6].x;b[6].y:=a[6].y;
b[7].x:=a[7].x;b[7].y:=a[7].y;
b[8].x:=a[8].x;b[8].y:=a[8].y;
b[9].x:=a[9].x;b[9].y:=a[9].y;
b[10].x:=a[10].x;b[10].y:=a[10].y;
b[11].x:=a[11].x;b[11].y:=a[11].y;
b[12].x:=a[12].x;b[12].y:=a[12].y;
 
pen.Color:=clred;
polygon (b);
 
end; end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ris;
end;
procedure TForm1.FormActivate(Sender: TObject);
var a:array[1..12] of tpoint;
begin
a[1].x:=5;a[1].y:=5;
a[2].x:=15;a[2].y:=15;
a[3].x:=25;a[3].y:=5;
a[4].x:=25;a[4].y:=20;
a[5].x:=50;a[5].y:=20;
a[6].x:=55;a[6].y:=5;
a[7].x:=65;a[7].y:=15;
a[8].x:=65;a[8].y:=40;
a[9].x:=55;a[9].y:=50;
a[10].x:=5;a[10].y:=50;
a[11].x:=20;a[11].y:=35;
a[12].x:=5;a[12].y:=20;
 
 
dx:=3; dy:=3;
timer1.Interval:=50;
form1.Canvas.Brush.Color:=form1.Color;end;
 
 
 
 
end.
у меня в середине где идет процедура ris,там какаято ошибка он делает что хочет а не передвигает рисунок
хотя по логике должен передвигать ра расстояние dx
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2011, 23:48
Ответы с готовыми решениями:

Рисование в PaintBox. Создание масштабируемого рисунка с цветной заливкой
Помогите нарисовать масштабируемый рисунок с заливкой. Рисунок состоит из примитивов (круги,...

Вставка анимированного рисунка
Доброго всем времени суток. Вопрос такой - можно ли и как если можно вставить gif файл в UserForm?

Создание анимированного фона 2D
Здравствуйте! Представляете, ввожу свою почту в форму восстановления, а пишут, что таковая не...

Создание анимированного спрайта
Собственно раньше не приходилось сталкиваться с нормальной анимацией. Всю анимацию делал с помощью...

__________________
3
5441 / 2148 / 450
Регистрация: 20.11.2009
Сообщений: 7,186
Записей в блоге: 1
21.05.2011, 03:00 2
А не проще создать процедуру с двумя входящими параметрами x и y , от них строить фигуру, и потом тупо переносить координаты x и y и таким образом естественно перенесем весь рисунок??????

Глядя на строки 38-49, вы не имеете понятия что такое цикл, эту всю насильственную работу можно было бы уменьшить в 1 строчку... ладно в 2

посоветовал бы только одно, что и написал выше, иначе это не программирование...

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

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Pr(x, y: Integer); // создаем процедуру с параметрами влияния на фигуру
begin
  Canvas.Rectangle(x,y, x+50,y+100); // указываем координаты прямоугольника, в зависимости от
// x и y это 2 параметра которые будем менять, и в зависимости от изменения 
//вся фигура попляшет от этих точек
end;
 
procedure TForm1.Timer1Timer(Sender: TObject); // вызываем в таймере эту процедуру, наш прямоугольник
var x,y: Integer;
begin
  Repaint;
  x := Random(ClientWidth);
  y := Random(ClientHeight);
  Pr(x,y);  //  с рандомно полученными x и y вычерчиваем прямоугольник на форме и любуемся результатом...
end;
ваш пример переделать под этот метод 3 минуты, даже вам самим
1
0 / 0 / 0
Регистрация: 16.01.2011
Сообщений: 24
21.05.2011, 19:39  [ТС] 3
Arcor, Благодарю за подсказку!!!!Попробую сделать.
Удачи!!!
0
Модератор
63332 / 47044 / 32427
Регистрация: 18.05.2008
Сообщений: 114,031
21.05.2011, 20:44 4
Вообще при перемещении фигуры все ее координаты должны быть привязаны к одной точке какими-то соотношениями, а не так
Delphi
1
a[1].x:=5;a[1].y:=5;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2011, 20:44

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Создание анимированного фона
Ну мужики, вот уже как два дня пыхчу:wall: и все никак не могу придумать как бы реализовать что то ...

Создание анимированного gif
Здраствуйте. Столкнулся с такой проблемой надо создать из png картинок gif анимированный. C++...

Создание анимированного, многоступенчатого DVD меню
Подскажите, пожалуйста. Я профан в этом деле полный. Обратился я в компьютерную фирму в своем...

Turbo Basic создание анимированного изображения
Добрый вечер уважаемые программисты. Проболел последний месяц и не мог ходить на пары, но учитель...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.