what?
把Image的Stretch设为True...

解决方案 »

  1.   

    为何用了StretchBlt之后,颜色失真
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      abmp,bbmp:TBitmap;
    begin
        abmp:=Tbitmap.Create;  //原图象
        bbmp:=Tbitmap.Create;  //缩放后的图象
        abmp.LoadFromFile('c:\a.bmp');
        bbmp.Width:=100;      //缩放后的宽度
        bbmp.Width:=200;      //缩放后的高度
        bbmp.Canvas.StretchDraw(Rect(0,0,abmp.Width,abmp.Height),abmp);
        bbmp.SaveToFile('c:\b.bmp');
        bbmp.Free;
        abmp.Free;
    end;
      

  3.   

    to:cgxp
    怎么给分?
    你在我的名字后面的框中填入50(原来是0)
    然后在上面的密码框中输入你的密码,然后按“给分”按钮就行了 !
      

  4.   

    to:cgxp
    怎么给分?
    你在我的名字后面的框中填入20(原来是0,不要多了,留一点给gaoql,:-D)
    然后在上面的密码框中输入你的密码,然后按“给分”按钮就行了 ! 
      

  5.   

    看下面的代码:
    //下面的代码将一个大于屏幕大小的BMP文件的大小进行改变,适合于屏幕的大小.失真比较小.
    //你可以对照看一下,改变图片的分辨率.看不懂就算了.
    procedure fitbitmap;
    var
     abmp,bbmp:tbitmap;
     scale:real;
     sx,sy:integer;
    begin
     abmp:=tbitmap.Create;
     bbmp:=tbitmap.Create;
     sx:=GetSystemMetrics(SM_CXSCREEN); 
     sy:=GetSystemMetrics(SM_CYSCREEN);
     try
     abmp.LoadFromFile(windir+WALLPAPERFILENAME);  //改成相应的文件名即可.Only支持BMP.
     if (abmp.Width>sx) or (abmp.Height>sy) then
     begin
       if abmp.Width/sx>abmp.Height/sy then scale:=abmp.Width/sx else scale:=abmp.Height/sy;
       bbmp.Width:=round(abmp.Width/scale);
       bbmp.Height:=round(abmp.Height/scale);
       bbmp.PixelFormat:=abmp.PixelFormat;
       SetStretchBltMode(bbmp.Canvas.Handle,COLORONCOLOR);
       stretchblt(bbmp.Canvas.Handle,0,0,bbmp.Width,bbmp.Height,abmp.Canvas.Handle,0,0,abmp.Width,abmp.Height,srccopy);
       bbmp.SaveToFile(windir+WALLPAPERFILENAME);
     end;
     finally
     abmp.Free;
     bbmp.Free;
     end;
    end;