回 帖 发 新 帖 刷新版面

主题:[讨论]怎样才能实现更好的效果,移动的时候应该不要出现闪屏,转弯的时候不要出现太大的时间落差?

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,math;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    Button2: TButton;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure RotateImage;
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  BitMap:TBitMap;
  a,b:integer;
implementation

{$R *.dfm}

procedure TForm1.RotateImage;
var x,y : Integer;
     TmpBitMap : TBitmap;
begin
   TmpBitMap := TBitmap.Create;
   try
     TmpBitMap.Assign(Image1.Picture.Graphic); //Copies a new bitmap image to the bitmap object.用graphic也行
     with Image1 do begin
       Picture.Bitmap.Height := TmpBitMap.Width;
       Picture.Bitmap.Width := TmpBitMap.Height;
       for x:=0 to Height do
         for y:=0 to Width do
           Canvas.Pixels[x,TmpBitMap.Width-y] := TmpBitMap.Canvas.Pixels[y,x];//TmpBitMap.Height- x代表右转
       Height := TmpBitMap.Width;
       Width := TmpBitMap.Height;
     end;
   finally
     TmpBitMap.Free;
   end;
end;




procedure CarMoveX(x, y: integer; Bit: TBitMap);
begin
  Form1.Canvas.Draw(x, y, Bit);
  //x := x + 5;
end;

procedure CarMoveY(x, y: integer; Bit: TBitMap);
begin
  Form1.Canvas.Draw(x, y, Bit);
  //y := y + 2;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
  Timer1.Enabled:=False;
  RotateImage;
  Timer2.Enabled:=True;
  Image1.Visible:=False;
end;
                

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Form1.Canvas.Refresh;
  Form1.Repaint;
  CarMoveY(0,a,Image1.Picture.Bitmap);//沿Y轴移动
  a:=a+2;
  Image1.Visible:=false;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  Form1.Canvas.Refresh;
  Form1.Repaint;
  CarMoveX(b,a,Image1.Picture.Bitmap);
  b:=b+5;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.DoubleBuffered:=true;
end;

end.



回复列表 (共3个回复)

沙发

[color=0000FF][size=5][b]
长期承接各种毕业设计:
本人计算机专业毕业,会多种语言,对于VB,VC,DELPHI,ASP,sql等非常熟悉, 对于数据库编程,socket编程等有丰富的经验,有需要的请联系QQ: 383147818 请注明: pfan毕业设计[/b][/size][/color]

板凳

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

3 楼

寻找中国的最优秀的网商领袖精英 
淘宝商盟元亨 qq: 908889846 
当今世界正经历着全球经济一体化的大潮,中国本土企业也因此面临着前所未有的机遇与挑战。
在这场洗礼中,哪些互联网平台有能力成为世界级的电子商务平台?网商精英要怎样做,才能最终成长为世界级网商精英领袖?
淘宝商盟平台震撼登场,携手淘宝30万商家联盟购物商城。
平台刚刚启动,互联网的网商精英请咨询qq: 908889846 
占领市场第一先机,合力打造网商系统!
淘宝商盟官网   www.taobaosm.com
 http://blog.sina.com.cn/tbsm8
淘宝商盟奖励制度

我来回复

您尚未登录,请登录后再回复。点此登录或注册