你的代码我试过了,占用率何止是增加就是100%啊
循环里的参数我不知道呆会再模拟以下,你先试一下把范围判断挪到其他的地方例如当image发生mouseenter消息时激活timer当mouseleave时停止timer
下面是我临时测试的一段代码,主要是一幅图片在另一幅图片上移动,不闪烁同时占用率也不高,timer的时间为1/10秒
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Image2: TImage;
Timer1: TTimer;
Image3: TImage;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
m:tbitmap;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
m:=tbitmap.Create;
m.LoadFromFile('D:/我是骆驼/骆驼.bmp');
form1.DoubleBuffered:=true;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
m.Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
j:integer;
t:tpoint;
begin
// Image3.Visible:=false;//要显示的图片不可见
form1.Image2.Picture.Bitmap.Assign(m);
getcursorpos(t);
Form1.Label1.Caption :='';
image3.Left :=screentoclient(t).x;
image3.Top :=screentoclient(t).y;//在范围内,设置Image3的位置
// image3.Visible :=true;//可视
Form1.Label1.Caption :='www';//另一窗体进行提示
end;
end.