怎样将Image1中的aa.jpg图像旋转90度? 请给源码,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 VAR Bitmap:TBitmap; TemBmp:TBitamp; JPG:TJPEGImage; i : INTEGER; j : INTEGER; rowIn : pRGBArray;BEGIN JPG := TJPEGImage.Create; JPG.LoadFromFile(FilName); TemBmp := TBitmap.Create; TemBmp.Assign(TemBmp); Bitmap := TBitmap.Create; Bitmap.Width := TemBmp.Height; Bitmap.Height := TemBmp.Width; Bitmap.PixelFormat := TemBmp.PixelFormat; FOR j := 0 TO TemBmp.Height - 1 DO BEGIN rowIn := TemBmp.ScanLine[j]; FOR i := 0 TO TemBmp.Width - 1 DO pRGBArray(Bitmap.ScanLine[TemBmp.Width - i - 1])[j] := rowIn[i] END;END; TemBmp.Assign(TemBmp);改为TemBmp.Assign(JPG); 错误信息如下:请指教[Error] Unit1.pas(30): Undeclared identifier: 'TBitamp'[Error] Unit1.pas(34): Undeclared identifier: 'pRGBArray' TYPE TRGBArray = ARRAY[0..65534] OF TRGBTriple; pRGBArray = ^TRGBArray;这个当然不能少!TBitmap纯属笔误! 还是用CopyRect吧,最方便的方法CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: TRect)提示:Dest,Source的不同可实现图像的翻转、旋转等操作 一定行的!!!给我加分吧!!!--- Delphi中的Image构件可以显示位图,进一步,我们还可以用它完成位图旋转。---- 把一个点绕原点旋转α角度后,新的坐标位置与原坐标位置的关系是:X=xcosα-ysinαY= xsinα+ycosα例如要把位图顺时针旋转90度,坐标变换公式为:X=-y Y=x---- 把这一公式用到Image构件上,显示位图的主要问题是Image构件显示的位图只有一个象限, 并且x、y坐标也是互相颠倒的,为了解决这个问题,必须在Image构件上建立一个新的坐标原点。下面就举例说明。---- 1. 新建一工程project1在form1上添加image1、 image2、 image3、image4,其 Autosize属性设为Trueimage1用来显示原图,image2、image3、image4分别用来显示旋转90度、180度和270度后的图像。双击image1,选定一幅bmp图。---- 2. 添加Button1、Button2、Button3和Button4按钮,其caption属性分别为“原图”、 “旋转90度”、“旋转180度”、“旋转270度”。---- 3. 编写“旋转90度”按钮的On Click事件。procedure TForm1. Button2Click (Sender: TObject);varij:integer;begin//确定旋转后位图的大小image2.Picture.Bitmap.Height:=image1.picture.width;image2.Picture.Bitmap.Width:=image1.picture.height;for i:=0 to image1.Height dofor j:=0 to image1.Width doimage2.canvas.Pixels[(-i+ image1.Height)j]:=image1.canvas.Pixels[ji];end;---- 4. 编写“旋转180度”按钮的On Click事件。procedure TForm1.Button3Click(Sender: TObject);varij:integer;begin//确定旋转后位图的大小image3.Picture.Bitmap.Height:=image1.picture.Height;image3.Picture.Bitmap.Width:=image1.picture.Width;for i:=0 to image1.Height dofor j:=0 to image1.Width doimage3.canvas.Pixels[(image1.Width-j)(image1.Height-i)]:=image1.canvas.Pixels[ji];end;---- 5. 编写“旋转270度” 按钮的On Click事件。代码和步骤3相似,只需要用image4 替换image2,然后用以下的语句替换步骤3 for循环中的原有的语句。image4.canvas.Pixels[i(image1.Width-j)]:=image1.canvas.Pixels[ji]; 真拿你没办法,这次把示例程序给你!http://www.ehomsoft.com/pictest.zip delphi2010 中ado ocbc mysql别名中文问题求助 blckSock控件源码哪里有?请帮帮忙吧!谢谢了 请问如何提示网址中的文件名? 小波变换重构失真的问题 如何得到自身控件的属性: 我感觉我太浮躁了!我累了,我好想去农村过农耕田园生活!! 删除记录的问题 关于接口的问题??高分回报你的热情。谢谢 求翻译UDX SDK为DELPHI 开发CDROM快捷控制的程序 如何让Image内容更新而不闪烁? 给50分简单问题!如何检测一个对象实例已经被创建?
Bitmap:TBitmap;
TemBmp:TBitamp;
JPG:TJPEGImage;
i : INTEGER;
j : INTEGER;
rowIn : pRGBArray;
BEGIN
JPG := TJPEGImage.Create;
JPG.LoadFromFile(FilName);
TemBmp := TBitmap.Create;
TemBmp.Assign(TemBmp);
Bitmap := TBitmap.Create;
Bitmap.Width := TemBmp.Height;
Bitmap.Height := TemBmp.Width;
Bitmap.PixelFormat := TemBmp.PixelFormat;
FOR j := 0 TO TemBmp.Height - 1 DO
BEGIN
rowIn := TemBmp.ScanLine[j];
FOR i := 0 TO TemBmp.Width - 1 DO
pRGBArray(Bitmap.ScanLine[TemBmp.Width - i - 1])[j] := rowIn[i]
END;
END;
改为
TemBmp.Assign(JPG);
[Error] Unit1.pas(30): Undeclared identifier: 'TBitamp'
[Error] Unit1.pas(34): Undeclared identifier: 'pRGBArray'
TRGBArray = ARRAY[0..65534] OF TRGBTriple;
pRGBArray = ^TRGBArray;这个当然不能少!TBitmap纯属笔误!
CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: TRect)
提示:Dest,Source的不同可实现图像的翻转、旋转等操作
--- Delphi中的Image构件可以显示位图,进一步,我们还可以用它完成位图旋转。
---- 把一个点绕原点旋转α角度后,新的坐标位置与原坐标位置的关系是:
X=xcosα-ysinαY= xsinα+ycosα例如要把位图顺时针旋转90度,坐标变换公式为:X=-y Y=x
---- 把这一公式用到Image构件上,显示位图的主要问题是Image构件显示的位图只有一个象限, 并且x、y坐标也是互相颠倒的,为了解决这个问题,必须在Image构件上建立一个新的坐标原点。下面就举例说明。---- 1. 新建一工程project1在form1上添加image1、 image2、 image3、image4,其 Autosize属性设为Trueimage1用来显示原图,image2、image3、image4分别用来显示旋转90度、180度和270度后的图像。双击image1,选定一幅bmp图。
---- 2. 添加Button1、Button2、Button3和Button4按钮,其caption属性分别为“原图”、 “旋转90度”、“旋转180度”、“旋转270度”。
---- 3. 编写“旋转90度”按钮的On Click事件。
procedure TForm1. Button2Click (Sender: TObject);varij:integer;begin//确定旋转后位图的大小image2.Picture.Bitmap.Height:=image1.picture.width;image2.Picture.Bitmap.Width:=image1.picture.height;for i:=0 to image1.Height dofor j:=0 to image1.Width doimage2.canvas.Pixels[(-i+ image1.Height)
j]:=image1.canvas.Pixels[ji];end;---- 4. 编写“旋转180度”按钮的On Click事件。procedure TForm1.Button3Click(Sender: TObject);varij:integer;begin//确定旋转后位图的大小image3.Picture.Bitmap.Height:=image1.picture.Height;image3.Picture.Bitmap.Width:=image1.picture.Width;for i:=0 to image1.Height dofor j:=0 to image1.Width doimage3.canvas.Pixels[(image1.Width-j)(image1.Height-i)]:=image1.canvas.Pixels[ji];end;
---- 5. 编写“旋转270度” 按钮的On Click事件。代码和步骤3相似,只需要用image4 替换image2,然后用以下的语句替换步骤3 for循环中的原有的语句。image4.canvas.Pixels[i(image1.Width-j)]:=image1.canvas.Pixels[ji];
http://www.ehomsoft.com/pictest.zip