var
  ImgD: TGPImage;
  EClsid: TGUID;
begin
  ImgD:=TGPImage.Create;
  grp:=TGPGraphics.Create(ImgD);
  brush:=TGPSolidBrush.Create(clWhite);
  grp.FillRectangle(brush,0,0,100,100);
  GetEncoderClsid('image/jpeg',EClsid);
  ShowMessage(GetStatus(ImgD.save('C:\1.jpg',EClsid)));结果Save失败:
---------------------------
Project1
---------------------------
InvalidParameter
---------------------------
OK   
---------------------------

解决方案 »

  1.   

    procedure TFormThumb.Button2Click(Sender: TObject);
    var
      ImgD: TGPImage;
      EClsid: TGUID;
      Grp : TGPGraphics;
      brush: TGPSolidBrush;
    begin
      ImgD:=TGPImage.Create('User.Bmp');
      grp:=TGPGraphics.Create(ImgD);
      brush:=TGPSolidBrush.Create(clWhite);
      grp.FillRectangle(brush,0,0,100,100);
      GetEncoderClsid('image/jpeg',EClsid);
      ShowMessage(GetStatus(ImgD.save('C:\1.jpg',EClsid,nil)));
    end;
      

  2.   

    ImgD:=TGPImage.Create('User.Bmp');
    这个User.bmp必须是存在的么?
      

  3.   

    我试了:
    var
      ImgD: TGPImage;
      EClsid: TGUID;
      Grp : TGPGraphics;
      brush: TGPSolidBrush;
    begin
      ImgD:=TGPImage.Create('C:\1.Bmp');
      grp:=TGPGraphics.Create(ImgD);
      brush:=TGPSolidBrush.Create(clRed);
      grp.FillRectangle(brush,0,0,100,100);
      GetEncoderClsid('image/jpeg',EClsid);
      ShowMessage(GetStatus(ImgD.save('C:\1.jpg',EClsid,nil)));
    结果:
    ---------------------------
    Project1
    ---------------------------
    InvalidParameter
    ---------------------------
    OK   
    ---------------------------
    在C:\1.jpg下确定产生了这个文件,但用IE浏览不了这个JPEG文件。
      

  4.   

    我看你对GDIPlus很热衷, 建议你去买本书看看
    《精通GDI+编程》周鸣扬 赵景亮 编著 清华大学出版社¥42.00
      

  5.   

    虽然例子是C++的,但转移到DELPHI很容易的。 共同学习,共同进步!
      

  6.   

    我将代码改了一下:var
      ImgD: TGPImage;
      EClsid: TGUID;
      Grp : TGPGraphics;
      brush: TGPSolidBrush;
    begin
      ImgD:=TGPImage.Create('C:\1.Bmp');
      grp:=TGPGraphics.Create(ImgD);
      brush:=TGPSolidBrush.Create(clRed);
      grp.FillRectangle(brush,0,0,200,200);
      GetEncoderClsid('image/bmp',EClsid);
      ShowMessage(GetStatus(ImgD.save('C:\2.bmp',EClsid)));现在能生成2.bmp了,但这个2.bmp与1.bmp完全一样,并没有画上红色的Rectangle?
      

  7.   

    明白为什么不能保存绘图了,原来要这样:
      ImgD:=TGPImage.Create('C:\1.Bmp');
    //  ImgD:=TGPImage.Create;
      grp:=TGPGraphics.Create(ImgD);
      brush:=TGPSolidBrush.Create(makeColor(255,0,0));
      grp.FillRectangle(brush,0,0,200,200);
      pen:=TGPPen.Create(makeColor(0,0,0),5);
    创建pen 和brush对象时要用指定 Alpha 部分的色彩表示。Alpha 表示所呈现图形后面的对象的透明度但现在的问题是,创建一个新的JPEG图似乎还不行,还是:
    ---------------------------
    Project1
    ---------------------------
    InvalidParameter
    ---------------------------
    OK   
    ---------------------------