Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вращение [D7, XP]


Страницы:   1 2 3 4

Newss ©   (2008-08-07 15:17:00) 

Здравствуйте.
Подскажите, пожалуйста, как вращать прямоугольник вокруг своего центра. Прямоугольник задается своей диагональю, то есть известны точки (х1, у1) и (х2, у2).  
Спасибо.


_Milk   (2008-08-07 17:56:00) [61]

Большая "куча" советов, но почему-то никто не прокомментировал (или не понял) > Johnmen ©   (07.08.08 15:32) [3]
> Спасибо. Поржал.
О каком вращении прямоугольника может идти речь, если через диагональ их можно задать бесчисленное множество (все вершины которых располагаются на полуокружности, у которой эта диагональ является диаметром)


{RASkov}   (2008-08-07 17:41:00) [62]

> Этот метод не рисует "повернутые" прямоугольники.

Не зря в кавычках :)
Так как и этим методом можно "повернуть"... Т.е. крутить можно канву, а рисовать данным методом....
ModifyWorldTransform


DVM   (2008-08-07 16:40:00) [63]


> Newss   (07.08.08 15:51) [6]


> стандартную процедуру Image.Canvas.Rectangle(x1,y1,x2,y2);

Я так и думал. Используй canvas.Polygon();


Сергей М.   (2008-08-07 16:27:00) [64]


> Использую стандартную процедуру Image.Canvas.Rectangle(x1,
> y1,x2,y2)


Этот методне рисует "повернутые" прямоугольники.


stas   (2008-08-07 15:52:00) [65]

Newss   (07.08.08 15:51) [6]
сначала рисую его белым цветом по старым координатам,
Лучше рисуй на другой канве, а потом перерисовую канву. Мерцать не будет.


Newss   (2008-08-07 15:51:00) [66]

сначала рисую его белым цветом по старым координатам, а затем, после расчета новых координат, рисую прямоугольник по ним черным цветом. Использую стандартную процедуру Image.Canvas.Rectangle(x1,y1,x2,y2);


DVM   (2008-08-07 15:45:00) [67]


> Newss   (07.08.08 15:32) [2]


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

А как ты его рисуешь, можешь показать?


stas   (2008-08-07 15:35:00) [68]

x2:=xx-
y2=yy-


Johnmen   (2008-08-07 15:32:00) [69]


>  Прямоугольник задается своей диагональю, то есть известны
> точки (х1, у1) и (х2, у2).  

Спасибо. Поржал.


Newss   (2008-08-07 15:32:00) [70]

Вот меня как раз и интересует, как вычислять координаты точек. Вот так не работает:

   xx:=round(abs(P[i].x1-P[i].x2)/2); //вычисляем
   yy:=round(abs(P[i].y1-P[i].y2)/2); //координаты центра
   P[i].x1:=xx+round((P[i].x1-xx)*cos(0.1)-(P[i].y1-yy)*sin(0.1));
   P[i].y1:=yy+round((P[i].x1-xx)*sin(0.1)+(P[i].y1-yy)*cos(0.1));
   P[i].x2:=xx+round((P[i].x2-xx)*cos(0.1)-(P[i].y2-yy)*sin(0.1));
   P[i].y2:=yy+round((P[i].y2-yy)*sin(0.1)+(P[i].y2-yy)*cos(0.1));

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


stas   (2008-08-07 15:25:00) [71]

тригонометрия. В зависимости от градуса вычисляешь координаты точек.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо