哪位大哥有图像旋转的源码啊!(0分)

  • 主题发起人 主题发起人 lhdyesok
  • 开始时间 开始时间
L

lhdyesok

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位大哥有图像旋转的源码啊!
谢谢!
LI_Hong_de@163.com
 
为什么总是没人顶啊!
唉,是不是嫌我没分,我现在一分都没有啊,所以就没分罗,各位大哥,帮我顶顶吧!
 
图像旋转的源码很多,主要是数学算法,
让图像旋转



Delphi中的Image构件可以显示位图,进一步,我们还可以用它
完成位图旋转。

----把一个点绕原点旋转α角度后,新的坐标位置与原坐标位置的关系是:

X=x?cosα-y?sinα
Y=x?sinα+y?cosα
例如要把位图顺时针旋转90度,坐标变换公式为:X=-yY=x

----把这一公式用到Image构件上,显示位图的主要问题是Image构件显示的位图只有一个象限,并且x、y坐标也是互相颠倒的,为了解决这个问题,必须在Image构件上建立一个新的坐标原点。下面就举例说明。

----1.新建一工程project1,在form1上添加image1、image2、image3、image4,其Autosize属性设为True,image1用来显示原图,image2、image3、image4分别用来显示旋转90度、180度和270度后的图像。双击image1,选定一幅bmp图。

----2.添加Button1、Button2、Button3和Button4按钮,其caption属性分别为"原图"、"旋转90度"、"旋转180度"、"旋转270度"。

----3.编写"旋转90度"按钮的OnClick事件。

procedureTForm1.Button2Click(Sender:TObject);
var
i,j:integer;
begin
//确定旋转后位图的大小
image2.Picture.Bitmap.Height:=image1.picture.width;
image2.Picture.Bitmap.Width:=image1.picture.height;
fori:=0toimage1.Heightdo
forj:=0toimage1.Widthdo
image2.canvas.Pixels[(-i+image1.Height),
j]:=image1.canvas.Pixels[j,i];
end;


----4.编写"旋转180度"按钮的OnClick事件。

procedureTForm1.Button3Click(Sender:TObject);
var
i,j:integer;
begin
//确定旋转后位图的大小
image3.Picture.Bitmap.Height:=image1.picture.Height;
image3.Picture.Bitmap.Width:=image1.picture.Width;
fori:=0toimage1.Heightdo
forj:=0toimage1.Widthdo
image3.canvas.Pixels[(image1.Width
-j),(image1.Height-i)]:=image1.canvas.Pixels[j,i];
end;

----5.编写"旋转270度"按钮的OnClick事件。代码和步骤3相似,只需要用image4替换image2,然后用以下的语句替换步骤3for循环中的原有的语句。

image4.canvas.Pixels[i,(image1.Width-j)]:=image1.canvas.Pixels[j,i];

 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1600015
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1153142
 
chenxz太感谢您了,让我重新看到了希望!
 

Similar threads

后退
顶部