Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 13.05.2009, 13:47   #1
kentlm
 
Регистрация: 13.05.2009
Сообщений: 4
Репутация: 10
По умолчанию Анимирование стрелки...

Ниже приведен код рисования стрелки на Image:
Image1.Canvas.MoveTo(xx+30,55); //рисование
Image1.Canvas.LineTo(xx+48,55); // стрелки
Image1.Canvas.MoveTo(xx+48,55);
Image1.Canvas.LineTo(xx+40,51);
Image1.Canvas.MoveTo(xx+48,55);
Image1.Canvas.LineTo(xx+40,59);

Подскажите пожалуйста, как мне её аннимировать для поворота на 90 градусов по часовой стрелке???
kentlm вне форума   Ответить с цитированием
Старый 13.05.2009, 17:01   #2
DeKot
Профессионал
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Адрес: Молдова
Сообщений: 1,980
Репутация: 898
По умолчанию

Результат поиска :
Пользуйтесь поиском.
__________________
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума   Ответить с цитированием
Старый 14.05.2009, 02:17   #3
DomiNick
Студент, не
Профессионал
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Адрес: Россия-Матушка, ул.«Эльфов 80-го уровня», спросить "сáмого Эльфа"...
Сообщений: 2,067
Репутация: 440
Лампочка

Цитата:
Ниже приведен код рисования стрелки на Image:
Image1.Canvas.MoveTo(xx+30,55); //рисование
Image1.Canvas.LineTo(xx+48,55); // стрелки
Image1.Canvas.MoveTo(xx+48,55);
Image1.Canvas.LineTo(xx+40,51);
Image1.Canvas.MoveTo(xx+48,55);
Image1.Canvas.LineTo(xx+40,59);

Подскажите пожалуйста, как мне её аннимировать для поворота на 90 градусов по часовой стрелке???
Ну во-первых не "рисование/стрелки", а "задание координат пера/рисование линии"...

А во-вторых думаю как-то так получше будет:
Код:

Var xx, yy, a, b: Integer;
...
// xx:=40; yy:=40; - координаты "центра стрелки"
// a:=20; b:=10; - параметры стрелки (длина и острота)
Image1.Canvas.MoveTo(xx-a, yy);
Image1.Canvas.LineTo(xx+a, yy);
Image1.Canvas.LineTo(xx, yy-b);
Image1.Canvas.MoveTo(xx, yy+b);
Image1.Canvas.LineTo(xx+a, yy);

Цитата:
Подскажите пожалуйста, как мне её аннимировать для поворота на 90 градусов по часовой стрелке?
Изменять исходную длину "a" и "b" относительно угла поворота стрелки от "xx" и "yy"...
Плюс ещё боковые линии рисовать относительно поворота...

(извините за кривую "терминологию")

Примерно так:
Код:

Procedure Arrow(x, y, Ang: Integer);
Var x1, y1, x2, y2: Integer; // смещения относительно центра стрелки ("a" и "b")
Begin
Form1.Image1.Canvas.Rectangle(-10, -10, Form1.Image1.Width+9, Form1.Image1.Height+9); // очищаем холст
x1:=Round(a*Cos(Ang*Pi/180)); // вычисляем новую длину "смещения" по "x" для "a"
y1:=Round(a*Sin(Ang*Pi/180)); // вычисляем новую длину "смещения" по "y" для "a"
x2:=Round(b*Cos(Ang*Pi/180+Pi/2)); // вычисляем новую длину "смещения" по "x" для "b"
y2:=Round(b*Sin(Ang*Pi/180+Pi/2)); // вычисляем новую длину "смещения" по "y" для "b"
Form1.Image1.Canvas.MoveTo(x-x1, y-y1);
Form1.Image1.Canvas.LineTo(x+x1, y+y1);
Form1.Image1.Canvas.LineTo(x+x2, y+y2);
Form1.Image1.Canvas.MoveTo(x-x2, y-y2);
Form1.Image1.Canvas.LineTo(x+x1, y+y1);
End;

А там уже циклом вызывать или в таймере:
Код:

Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
Angle:=Angle+1;
If (Angle>359) Or (Angle<-359) Then
      Angle:=0;
Arrow(xx, yy, Angle);
End;

__________________
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наглядное анимирование работы программы. Geddar Помощь студентам 9 03.05.2009 06:24
Помогмте создать стрелки прибора(высотометра) kasta Помощь студентам 1 11.11.2008 01:09


12:27.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru