1.定义一个全局变量var  JPEG1 : TJPEGImage;  
2.在 MDiForm 的 OnCreate 事件中加入 : 
   Jpeg1:=TJpegImage.Create;    
   Jpeg1.LoadFromFile('back.jpg');  //该图片为800*600
3.在 MdiForm 的 OnPain 事件中加入 
    Form1.Canvas.Draw(x,y,Jpeg1); 问题1:在1024*768下如何拉升jpeg1;
问题2:每次启动时总是先闪一下mdi窗体的背景色,然后才显示jpeg1,如何去掉
      这种闪烁感.
问题3:不用变量使用image作为背景将它的strech设为true可解决问题1但
      仍然有问题2
      请指教!

解决方案 »

  1.   

    你试一试:
      form1.Canvas.StretchDraw(参数)
      

  2.   

    使用BitBlt试试,因为BitBlt速度比较快的。当然bitblt需要对应Bitmap,因此你可以如下写:
    Bmp是全局变量。
    procedure TForm1.FormCreate(Sender: TObject);
    var
      Image: TImage;
    begin
      Image:=TImage.Create(nil);
      Image.Picture.LoadFromFile('e:\1.jpg');
      (Image.Picture.Graphic as TJPEGImage).DibNeeded;
      Bmp:=TBitmap.Create;
      Bmp.Assign(Image.Picture.Graphic);
      Image.Free;
    end;procedure TForm1.FormPaint(Sender: TObject);
    begin
      BitBlt(Canvas.Handle,0,0,width,height,Bmp.Canvas.Handle,0,0,srccopy);
    end;如果需要拉伸的话可以使用StretchBlt
      

  3.   

    第二个问题的解决:
    不要写在OnCreate中,覆盖他的构造函数:
    interfacetform1 = class(tform)
    public
      Constructor Create(AOwner:TComponent);override;
    end;implementationConstructor TForm1.Create(AOwner:TComponent);
    begin
      Jpeg1:=TJpegImage.Create;    
      Jpeg1.LoadFromFile('back.jpg');  
    end;