Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1257912
  • 博文数量: 788
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 7005
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 15:52
文章存档

2017年(81)

2011年(1)

2009年(369)

2008年(337)

分类:

2008-11-27 21:16:49



一个图片跟随鼠标移动,  
  要求是不能用窗体跟随鼠标的方法,只能在屏幕上画图,鼠标移动后,擦除图像,根据新位置在画,  
  高手来

//参考如下代码  
  type  
      TForm1   =   class(TForm)  
          Timer1:   TTimer;  
          Image1:   TImage;  
          procedure   Timer1Timer(Sender:   TObject);  
          procedure   FormCreate(Sender:   TObject);  
          procedure   FormDestroy(Sender:   TObject);  
      private  
          {   Private   declarations   }  
          FRect:   TRect;  
          FBitmap:   TBitmap;  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.Timer1Timer(Sender:   TObject);  
  var  
      vDesktopCanvas:   TCanvas;  
  begin  
      if   (FRect.Left   =   Mouse.CursorPos.X)   and   (FRect.Top   =   Mouse.CursorPos.Y)   then   //   鼠标没有移动  
          Exit;  
   
      vDesktopCanvas   :=   TControlCanvas.Create;  
      with   vDesktopCanvas   do   try  
          Handle   :=   GetWindowDC(GetDesktopWindow);  
          if   FRect.Left   >=   0   then   Draw(FRect.Left,   FRect.Top,   FBitmap);   //   恢复上次屏幕  
          FRect   :=   Bounds(Mouse.CursorPos.X,   Mouse.CursorPos.Y,  
              Image1.Picture.Width,   Image1.Picture.Height);  
          FBitmap.Canvas.CopyRect(FBitmap.Canvas.ClipRect,   vDesktopCanvas,   FRect);   //   保存本次绘制  
   
          Draw(FRect.Left,   FRect.Top,   Image1.Picture.Graphic);  
      finally  
          vDesktopCanvas.Free;  
      end;  
  end;  
   
  procedure   TForm1.FormCreate(Sender:   TObject);  
  begin  
      Timer1.Interval   :=   10;  
      FBitmap   :=   TBitmap.Create;  
      FBitmap.Width   :=   Image1.Picture.Width;  
      FBitmap.Height   :=   Image1.Picture.Height;  
      FRect.Left   :=   -1;  
  end;  
   
  procedure   TForm1.FormDestroy(Sender:   TObject);  
  begin  
      FBitmap.Free;  
  end;  
 

抢分!

伴水占了位置,过来接分。

。。。。。。。

阅读(283) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~