procedure TForm1.Button1Click(Sender: TObject);
var
bmp:TBitmap ;
rect:TRect ;
begin
if opendialog1.Execute  then
bmp:=TBitmap.Create ;
bmp.LoadFromFile(opendialog1.FileName);
rect:=image1.ClientRect ;   ////出错
Image1.Canvas.StretchDraw(rect,bmp);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pChar(opendialog1.FileName),
                          SPIF_UPDATEINIFILE);
end;
button 1未打开预览,button2位设置壁纸 编译没错 
运行出错  ....
rect:=image1.ClientRect ;
这一行 
如何解决?

解决方案 »

  1.   

    是不是你选择的图像文件不是bmp的,因为image不支持jpg等很多图像格式,所以,你要确保加载到image中的图像是它所支持的
      

  2.   

    你用TBitmap打开非bmp文件谁能有办法让它不出错
    另外,这种地方最好都用 try...finally 围起来
      

  3.   

    给你一个jpg转bmp的代码,需要引用jpeg单元
    function JpgTobmp(srcFile: string): TBitMap;
    var
      jpg : TJpegImage;
      bmp : TBitMap;
    begin
      try
        jpg := TJpegImage.Create;
        bmp := TBitMap.Create;
        jpg.LoadFromFile(srcFile);
        bmp.Assign(jpg);
        jpg.Free;
        Result := bmp;
      except
        Result := nil;
      end;
    end;