我的程序实现以下功能:在一个dialog类型的form中,加入一张面积大于form大小的图片,这样为了看全图片,就要对图片在form中进行拖动,以下就是我的程序:现在的问题是,图片在拖动过程中,闪烁的很厉害,请问有什么方法可以解决。
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, jpeg, StdCtrls;type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  fx,fy:integer;
  fz:integer;
implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
var
  str: string;
begin
 str:= ExtractFileDir(application.ExeName)+'\map_super.jpg';
 image1.Picture.LoadFromFile(str);
 panel1.Height:=image1.Picture.Height;
 panel1.Width:=image1.Picture.Width;
 panel1.Left:=0;
 panel1.Top:=0;end;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  fx:=X;
  fy:=Y;
  fz:=1;
  image1.Cursor:=crCross;
  form1.Caption:='横:'+inttostr(X)+' 纵:'+inttostr(Y);
end;procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 fz:=2;
 {
 if Button= mbLeft then
 begin
  panel1.Left:=panel1.Left+X-fx;
  panel1.Top:=panel1.Top+Y-fy;
  if panel1.Left>0 then
  begin
     panel1.Left:=0;
  end
  else
  begin
    if ((panel1.Left+panel1.Width) < form1.Width) then
    begin
       panel1.Left:=form1.Width - panel1.Width;
    end;
  end;
  //*****************************************
  if panel1.top>0 then
  begin
     panel1.top:=0;
  end
  else
  begin
    if ((panel1.top+panel1.Height) < form1.Height) then
    begin
       panel1.top:=form1.Height - panel1.Height;
    end;
  end;
 end;
 }
end;procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
 lx:integer;
 ty:integer;
begin
 image1.Cursor:=crCross;
 if fz=1 then
 begin
  lx:=panel1.Left+X-fx;
  if lx>=0 then
  begin
    panel1.Left:=0;
  end
  else
  begin
    if lx <=(form1.Width - panel1.Width) then
    begin
       panel1.Left:=form1.Width - panel1.Width;
    end
    else
    begin
       panel1.Left:=lx;
    end;
  end;
  //*****************************************
  ty:=panel1.Top+Y-fy;
  if ty>=0 then
  begin
    panel1.top:=0;
  end
  else
  begin
    if ty <=(form1.Height - panel1.Height) then
    begin
       panel1.top:=form1.Height - panel1.Height;
    end
    else
    begin
       panel1.top:=ty;
    end;
  end;
  form1.Caption:='------:'+inttostr(X)+' ||||||||:'+inttostr(Y);
 end;
end;end.