Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.10;
Скачать: CL | DM;

Вниз

2 вопроса по DelphiX   Найти похожие ветки 

 
Shadow ©   (2003-01-25 12:34) [0]

1)Как нарисовать рамку вокруг спрайта, если он повернут на опр. угол?
2)Как спрайт передвинуть мышкой?
(способ

procedure TForm1.DxDrawMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
sprite:=DXengine.Engine.GetSpriteAt(X,Y);
end;

procedure TForm1.DxDrawMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
sprite.X := X-DXengine.Engine.X;
sprite.Y := Y-DXengine.Engine.Y;
end;

не предлагать %))

Спасибо %)


 
Shadow ©   (2003-01-25 16:01) [1]

up!


 
Mihey   (2003-01-25 19:09) [2]

Ну, если угол определённый, то нарисуй рамку под определённым углом. Или поворачивай её вслед за спрайтом.


 
Shadow ©   (2003-01-26 10:44) [3]

up!


 
Ibrik   (2003-01-26 16:24) [4]

Геометрия 9-го класса

Вычисляешь координаты углов прямоугоьника(твоего спрайта) и разворачиваешь их на определённый угол.


Примерный код:

x0,y0 - координаты твоего спрайта
x,y - координаты точки развёрнутой на опр. угол
r - растояние от центра твоего прямоугольника (спраита)
до вершин (оно одинаково для всех вершин)
ugol - определённый угол

x0:=...
y0:=...
r:=...
ugol:=...

x:=x0+Round(r*cos((45+ugol)/(180/pi)));
y:=y0+Round(r*sin((45+ugol)/(180/pi)));

..Canvas.MoveTo(x,y);

x:=x0+Round(r*cos((135+ugol)/(180/pi)));
y:=y0+Round(r*sin((135+ugol)/(180/pi)));

..Canvas.LineTo(x,y);
..Canvas.MoveTo(x,y);

x:=x0+Round(r*cos((225+ugol)/(180/pi)));
y:=y0+Round(r*sin((225+ugol)/(180/pi)));

..Canvas.LineTo(x,y);
..Canvas.MoveTo(x,y);

x:=x0+Round(r*cos((315+ugol)/(180/pi)));
y:=y0+Round(r*sin((315+ugol)/(180/pi)));

..Canvas.LineTo(x,y);
..Canvas.MoveTo(x,y);

x:=x0+Round(r*cos((45+ugol)/(180/pi)));
y:=y0+Round(r*sin((45+ugol)/(180/pi)));

..Canvas.LineTo(x,y);
..Canvas.MoveTo(x,y);

..Canvas.Release;
..DXDraw1.Flip;


Если непонял (в чём я сомневаюсь) то мы делаем так:

Вычисляем координаты вершины прямоугольника(твоего спрайта)
повёрнутой на опр. угол +45 градусов (правая верхняя вершина)

Вычисляем координаты вершины прямоугольника(твоего спрайта)
повёрнутой на опр. угол +135 градусов (левая верхняя вершина)

соединим их линией

и так далее...


 
Shadow ©   (2003-01-26 17:11) [5]

Да ладно..?


 
Ibrik   (2003-01-26 21:04) [6]

Shadow © (26.01.03 17:11)
Да ладно..?


Скажи СПАСИБО за помощь,а не выпендривайся!!!


 
Shadow ©   (2003-01-26 21:24) [7]

Не обжайся...

СПАСИБО!!.. %)))



Страницы: 1 вся ветка

Текущий архив: 2003.07.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
14-31493
leonidus
2003-06-07 13:40
2003.07.10
Запуск моей программы из контекстного меню IE, как в ReGet`е


3-31120
Kile
2003-06-17 15:28
2003.07.10
Interbase тригеры в Delphi


4-31560
K_O_T
2003-05-06 22:35
2003.07.10
COM интерфейс IStorage. Help!


3-31096
me2
2003-06-16 15:05
2003.07.10
Использование EhLibIBX (сортировки полей таблицы)


11-31165
Gandalf
2002-10-29 19:59
2003.07.10
KOLnMCK 1.56