![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
2 вопроса по DelphiX [Delphi, Windows]
Shadow © (2003-01-25 12:34:00)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-26 21:24:00) [1]Не обжайся...
СПАСИБО!!.. %)))
Ibrik (2003-01-26 21:04:00) [2]Shadow © (26.01.03 17:11)
Да ладно..?
Скажи СПАСИБО за помощь,а не выпендривайся!!!
Shadow (2003-01-26 17:11:00) [3]Да ладно..?
Ibrik (2003-01-26 16:24:00) [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 10:44:00) [5]up!
Mihey (2003-01-25 19:09:00) [6]Ну, если угол определённый, то нарисуй рамку под определённым углом. Или поворачивай её вслед за спрайтом.
Shadow (2003-01-25 16:01:00) [7]up!