Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 22.01.2020
Сообщений: 1
1

Как создать движение объекта?

22.01.2020, 19:19. Просмотров 947. Ответов 1

Здравствуйте!
Помогите, пожалуйста.
Мне нужно, чтобы объект двигался по Image через Canvas, но он только размазывается.
Что делать?
Pascal
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, crt, LCLType;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
    procedure FormKeyUp(Sender: TObject; var Key: word; Shift: TShiftState);
    procedure Timer1Timer(Sender: TObject);
  private
 
  public
 
  end;
 
type
 
  { TT }
 
  TT = class(TObject)
    x, y, num: int64;
    procedure draw(img: TImage);
  end;
 
type
 
  { TU }
 
  TU = class(TObject)
    x, y, xx, yy: int64;
    procedure draw(img: TImage);
  end;
 
var
  Form1: TForm1;
  t1, t2, ust: TPortableNetworkGraphic;
  w, s, a, d: boolean;
  list: TList;
  t: TT;
  us: TU;
 
implementation
 
{$R *.lfm}
 
{ TU }
 
procedure TU.draw(img: TImage);
begin
  xx := x;
  yy := y;
  img.Canvas.retri(xx, yy, );
  img.Canvas.Draw(x, y, ust);
end;
 
{ TT }
 
procedure TT.draw(img: TImage);
var
  i: int64;
begin
 
  num := random(2);
  x := random(form1.Width);
  y := Random(form1.Height);
  case num of
    0: img.Canvas.Draw(x, y, t1);
    1: img.Canvas.Draw(x, y, t2);
 
  end;
end;
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
  us := TU.Create;
  t := TT.Create;
 
  list := TList.Create;
  t1 := TPortableNetworkGraphic.Create;
  t2 := TPortableNetworkGraphic.Create;
  ust := TPortableNetworkGraphic.Create;
  t1.LoadFromFile('christmas.png');
  t2.LoadFromFile('tools-and-utensils.png');
  ust.LoadFromFile('profile (1).png');
  Image1.Canvas.Brush.Color := clWhite;
  image1.Canvas.Rectangle(0, 0, 800, 600);
end;
 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
begin
  if key = vk_up then
    w := True;
  if key = vk_down then
    s := True;
  if key = vk_left then
    a := True;
  if key = VK_RIGHT then
    d := True;
end;
 
procedure TForm1.FormKeyUp(Sender: TObject; var Key: word; Shift: TShiftState);
begin
  if key = vk_up then
    w := False;
  if key = vk_down then
    s := False;
  if key = vk_left then
    a := False;
  if key = VK_RIGHT then
    d := False;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  //  Image1.Canvas.Pen.Style:=psClear;
  if w = True then
    us.y := us.y - 1;
  if s = True then
    us.y := us.y + 1;
  if a = True then
    us.x := us.x - 1;
  if d = True then
    us.x := us.x + 1;
  us.draw(Image1);
  //  t.draw(Image1);
end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2020, 19:19
Ответы с готовыми решениями:

Движение объекта
Подскажите пожалуйста как создать движение объекта в паскале с помощью клавиатуры и мыши...

движение графического объекта
Задача: Движение кубика по контуру экрана с изменением цвета при изменении направления ...

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

Возможно ли сделать движение зрачков, реагирующее на движение какого-либо объекта
Вообщем благодаря модеру удалось разукрасить картинку,за что ему спасибо. Нужна анимация для нее....

1
1998 / 693 / 501
Регистрация: 15.01.2019
Сообщений: 2,132
22.01.2020, 22:02 2
Лучше всего отрисовывать все изображения в промежуточный буфер Bitmap, а затем переносить изображение из Bitmap в Image1.Canvas
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2020, 22:02

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

Сформировать меню: 1) свободное движение объекта 2)движение с клавиатуры
Сформировать на экране меню, состоящее из следующих пунктов: 1. Движение вдоль периметра экрана....

Как реализовать движение объекта на поле?
Помогите пожалуйста. Надо написать лабу что то на подобе игры Lines. Но вопрос не в этом. Я не могу...

Как изобразить движение объекта в консоли?
Всем привет! Воообще новенький-преновенький в плюсах. Как анимировать движение, например, квадрата...

Как ускорить движение объекта мышкой?
http://beta.maquetter.com/client зажимаю мышку на картинке - двигаю картинку влево-вправо - она...


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

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

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