缩小之后,重新打开后,能显示缩小后的图片。而不是视觉上的缩小。(不考虑图片质量)

解决方案 »

  1.   

    //这个函数绝对可以满足你的要求!!她会自动调整源画布的图像,以适应
    //目的画布的大小!!
    //你可以看看帮助!好的话,就给我加多点分吧!!!
    StretchBlt  //函数名
    (DC,//目的画板句柄
    0,//左上角x
    0,//左上角y
    800,//右下角x
    600,//右下角y
    //其实,也是你画布的长宽度;我之所以改成坐标,就是好理解一些
    image1.canvas.handle,//源画布的句柄
    0,//以下就一样了,不用解释了……
    0,428,549,SRCCOPY);
      

  2.   

    仅需一句话:
    image1.stretch:=true;
      

  3.   

    对Bitmap.Canvas进行操作,如运用
    Canvas.CopyRect
    Canvas.StretchDraw
    而Canvas.CopyRect的实质就是调用GDI StretchBlt!
    而Image.canvas的本质就是,Image.Picture.Bitmap.Canvas!详见VCLTImage=Class(TGraphicControl)
    ...
      property Canvas: TCanvas read GetCanvas;
    ...
    end;function TImage.GetCanvas: TCanvas;
    var
      Bitmap: TBitmap;
    begin
      if Picture.Graphic = nil then
      begin
    Bitmap := TBitmap.Create;
    try
      Bitmap.Width := Width;
      Bitmap.Height := Height;
      Picture.Graphic := Bitmap;
    finally
      Bitmap.Free;
    end;
      end;
      if Picture.Graphic is TBitmap then
    Result := TBitmap(Picture.Graphic).Canvas
      else
    raise EInvalidOperation.Create(SImageCanvasNeedsBitmap);
    end;至于楼上的方法就只是视觉上的效果,实质并未改变!