如何使矩形旋转?(50分)

  • 主题发起人 小试牛刀
  • 开始时间

小试牛刀

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠,请问如何用delphi实现:画一个矩形,并且这个矩形可以自由旋转?谢谢!!
 
OPENGL,DIRETX
 
旋转的时侯顶点的轨迹是个圆,以旋转的中心为坐标原点,分别计算出各个顶点的坐标移动
就可以了.
 
可以旋转,很简单的。关健在于重画技术,重画是要擦除上一次的矩形,再重画当前的矩形,
实现方法:
class CRect
{
int x1, y1, x2, y2, x3, y3, x4, y4;
void Draw();
}
因此为要画任意角度的矩形,必须要有四个角的坐标才行,系统中的矩形画法只需要左上角
的和右下角的。就行了。但只能画出水平的矩形。
画任意角度的矩形,只需要画出这一个角度为90度的多边形就可。以左上角为基点,移动右下
角的点,根据左上角和右下角的点算出另外两个两个点,画出多边形就可。
在鼠标移动时,根据移动点不断的计算,然后不断重画这个多边形就可实现任意角度的旋转图
形就行了。
 
谢谢各位!我还不太明白!!请你们说的更详细点?
 
function Rotate2DPoint(P,Fix :TPoint; alpha:real): TPoint;
var
sinus, cosinus : Extended;
begin

cosinus:=cos(alpha);
sinus:=sin(alpha);
P.x := P.x - Fix.x;
P.y := P.y - Fix.y;
result.x := Round(p.x*cosinus + p.y*sinus)+ fix.x ;
result.y := Round(-p.x*sinus + p.y*cosinus)+ Fix.y;
end;
将矩形四顶点坐标安一固定点,以一角度值进行坐标转换,然后重画.
 
顶部