delphi有办法旋转或翻转图片么?

delphi有办法旋转或翻转图片么?

delphi有办法旋转或翻转图片么? Delphi / Windows SDK/API


http://www.delphi2007.net/DelphiMultimedia/html/delphi_20060929153916275.html

rt  

  要求效率比较高  

  谢谢

沙发  
  随便google下不都可以找一堆吗

procedure   TForm1.RotateangleClick(Sender:   TObject);  
  var  
      newbmp:   TBitmap;  
      Bitmap:   TBitmap;  
      angle:   integer;  
  begin  
      newbmp   :=   TBitmap.Create;  
      Bitmap   :=   TBitmap.Create;  
      screen.Cursor   :=   crhourglass;  
      newbmp.Assign(image1.Picture.Bitmap);  
      //newbmp.pixelFormat:=pf8bit;  
      //Bitmap.pixelFormat:=pf8bit;  
      angle   :=   strtoint(inputbox(‘旋转位图’,   ‘请输入旋转角度’,   ’90’));  
      Bmp_Rotate(newbmp,   bitmap,   angle);  
      image1.picture.Bitmap.Assign(bitmap);  
      image1.Left   :=   (self.Width   div   2)   –   (bitmap.Width   div   2);  
      image1.Top   :=   (self.Height   div   2)   –   (bitmap.Height   div   2);  
      screen.Cursor   :=   crdefault;  
      newbmp.Free;  
      Bitmap.Free;  
  end;

 
  procedure   Tform1.bmp_rotate(Srcbmp,   DestBmp:   Tbitmap;   angle:   extended);  
  var  
      c1x,   c1y,   c2x,   c2y:   integer;  
      p1x,   p1y,   p2x,   p2y:   integer;  
      radius,   n:   integer;  
      alpha:   extended;  
      c0,   c1,   c2,   c3:   tcolor;  
  begin  
      if   SrcBmp.Width   >   SrcBmp.Height   then  
      begin  
          DestBmp.width   :=   SrcBmp.Width;  
          DestBmp.height   :=   SrcBmp.Width;  
      end  
      else  
          DestBmp.Width   :=   SrcBmp.Height;  
      DestBmp.Height   :=   SrcBmp.Height;  
      //将角度转换为PI值  
      angle   :=   (angle   /   180)   *   pi;  
      //   计算中心点,你可以修改它  
      c1x   :=   SrcBmp.width   div   2;  
      c1y   :=   SrcBmp.height   div   2;  
      c2x   :=   DestBmp.width   div   2;  
      c2y   :=   DestBmp.height   div   2;  
      //   步骤数值number  
      if   c2x   <   c2y   then  
          n   :=   c2y  
      else  
          n   :=   c2x;  
      dec(n,   1);  
      //   开始旋转  
      for   p2x   :=   0   to   n   do  
      begin  
          for   p2y   :=   0   to   n   do  
          begin  
              if   p2x   =   0   then  
                  alpha   :=   pi   /   2  
              else  
                  alpha   :=   arctan2(p2y,   p2x);  
              radius   :=   round(sqrt((p2x   *   p2x)   +   (p2y   *   p2y)));  
              p1x   :=   round(radius   *   cos(angle   +   alpha));  
              p1y   :=   round(radius   *   sin(angle   +   alpha));  
   
              c0   :=   SrcBmp.canvas.pixels[c1x   +   p1x,   c1y   +   p1y];  
              c1   :=   SrcBmp.canvas.pixels[c1x   –   p1x,   c1y   –   p1y];  
              c2   :=   SrcBmp.canvas.pixels[c1x   +   p1y,   c1y   –   p1x];  
              c3   :=   SrcBmp.canvas.pixels[c1x   –   p1y,   c1y   +   p1x];  
   
              DestBmp.Canvas.pixels[c2x   +   p2x,   c2y   +   p2y]   :=   c0;  
              DestBmp.canvas.pixels[c2x   –   p2x,   c2y   –   p2y]   :=   c1;  
              DestBmp.canvas.pixels[c2x   +   p2y,   c2y   –   p2x]   :=   c2;  
              DestBmp.canvas.pixels[c2x   –   p2y,   c2y   +   p2x]   :=   c3;  
          end;  
          application.processmessages  
      end;  
  end;

用IMAGEEN控件可以做很多效果,并且速度很快

http://www.efg2.com/Lab/ImageProcessing/RotateScanline.htm  
  这个是用扫描线来做得   速度很快   自己看懂改下   就能用了

以上答案都正确

这么多分,我接!可以下一本<<delphi数字图象处理>>来看看!

发现个好组件:TRotateImage

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110935.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • web安全常见漏洞_web漏洞挖掘

    web安全常见漏洞_web漏洞挖掘常见Web漏洞小结1越权漏洞不同权限账户之间的存在越权访问检测抓去a用户功能链接,然后登录b用户对此链接进行访问抓去a用户功能链接,修改id为b的id,查看是否能看b的相关数据替换不同的cookie进行测试查看防范1服务器端必须对每个页面链接进行权限判断。2用户登陆后,服务器端不应再以客户端提交的用户身份信息为依据,而应以会话中服务端保存的已登陆的用户身份信息为准。3页面提交的资源标志与已登陆的用户身份进行匹配比对,然后判断其对当前链接是否有权限。4必须在服务器端对每个请求URL进行鉴

  • offes破解2022激活码(注册激活)「建议收藏」

    (offes破解2022激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • PowerBI 引入时间智能

    PowerBI 引入时间智能

    2021年11月26日
  • 2021pycharm最新激活码【2021.7最新】[通俗易懂]

    (2021pycharm最新激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • s一般怎么称呼自己的m_一般要怎么选合适自己的中频熔炼炉呢?

    s一般怎么称呼自己的m_一般要怎么选合适自己的中频熔炼炉呢?中频熔炼炉全称“中频感应式熔炼炉”,又名中频熔金机,在金属熔炼领域有着广泛的应用,特别是对于首饰铸造加工行业,起着至关重要的地位。市面上的中频熔炼炉那么多要怎么去选择呢?要如何去选择一款安全可靠的设备支持我们的企业的生产不掉链子呢?那就点从下面几个因素开始考虑了。基本我们在挑选设备功率的时候,需要考虑五个因素,1、要根据日常的生产需要去选择相对产品的性能。例如要看加热的体积和相应面积;加热体积大…

  • springboot 上传文件设置文件大小限制

    springboot 上传文件设置文件大小限制报错内容:org.springframework.web.multipart.MaxUploadSizeExceededException:Maximumuploadsizeexceeded;nestedexceptionisjava.lang.IllegalStateException:org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException:therequestwasrejectedbe…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号