zoukankan      html  css  js  c++  java
  • 使图片任意转动的编程例子

    unit unitImage; 
     
    interface 
     
    uses 
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
      StdCtrls, ExtCtrls, math; 
     
    type 
      TForm1 = class(TForm) 
        Image1: TImage; 
        Image2: TImage; 
        Image3: TImage; 
        Button2: TButton; 
        Button3: TButton; 
        Button4: TButton; 
        Image4: TImage; 
        Button1: TButton; 
        procedure Button2Click(Sender: TObject); 
        procedure Button3Click(Sender: TObject); 
        procedure Button4Click(Sender: TObject); 
      private 
        { Private declarations } 
        procedure bmp_rotate(src, dst: tbitmap; angle: extended); 
      public 
        { Public declarations } 
      end; 
     
    var 
      Form1: TForm1; 
     
    implementation 
     
    {$R *.DFM} 
     
    { TForm1 } 
     
    procedure TForm1.bmp_rotate(src, dst: 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 
      //将角度转换为PI值 
      angle := (angle / 180) * pi; 
      // 计算中心点,你可以修改它 
      c1x := src.width div 2; 
      c1y := src.height div 2; 
      c2x := dst.width div 2; 
      c2y := dst.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 := src.canvas.pixels[c1x + p1x, c1y + p1y]; 
              c1 := src.canvas.pixels[c1x - p1x, c1y - p1y]; 
              c2 := src.canvas.pixels[c1x + p1y, c1y - p1x]; 
              c3 := src.canvas.pixels[c1x - p1y, c1y + p1x]; 
     
              dst.canvas.pixels[c2x + p2x, c2y + p2y] := c0; 
              dst.canvas.pixels[c2x - p2x, c2y - p2y] := c1; 
              dst.canvas.pixels[c2x + p2y, c2y - p2x] := c2; 
              dst.canvas.pixels[c2x - p2y, c2y + p2x] := c3; 
            end; 
          application.processmessages 
        end; 
    end; 
     
     
    procedure TForm1.Button2Click(Sender: TObject); 
    var 
      i, j: integer; 
    begin 
      //确定旋转后位图的大小 
      image2.Picture.Bitmap.Height := image1.picture.width; 
      image2.Picture.Bitmap.Width := image1.picture.height; 
      for i := 0 to image1.Height do 
        for j := 0 to image1.Width do 
          image2.canvas.Pixels[(-i + image1.Height), 
            j] := image1.canvas.Pixels[j, i]; 
    end; 
     
     
    procedure TForm1.Button3Click(Sender: TObject); 
    var 
      i, j: integer; 
    begin 
      //确定旋转后位图的大小 
      image3.Picture.Bitmap.Height := image1.picture.Height; 
      image3.Picture.Bitmap.Width := image1.picture.Width; 
      for i := 0 to image1.Height do 
        for j := 0 to image1.Width do 
          image3.canvas.Pixels[(image1.Width 
            - j), (image1.Height - i)] := image1.canvas.Pixels[j, i]; 
    end; 
     
     
    procedure TForm1.Button4Click(Sender: TObject); 
    var 
      i, j: integer; 
    begin 
      //确定旋转后位图的大小 
      image4.Picture.Bitmap.Height := image1.picture.Width; 
      image4.Picture.Bitmap.Width := image1.picture.Height; 
      for i := 0 to image1.Height do 
        for j := 0 to image1.Width do 
          image4.canvas.Pixels[i, (image1.Width-j)] := image1.canvas.Pixels[j, i]; 
    end; 
     
     
     
    end. 
     
  • 相关阅读:
    VUE框架的初识
    cookie和session的区别及在Django中应用
    Django分页器的设置
    Django中manger/QuerySet类与mysql数据库的查询
    photoshop cc 2017使用快捷方式
    markdown基础语法
    pycharm中的flask项目如何开启debug模式
    flask连接数据库
    flask连接数据库
    pycharm中的flask项目如何开启debug模式
  • 原文地址:https://www.cnblogs.com/yzryc/p/6379067.html
Copyright © 2011-2022 走看看