本来用imageen已经可以实现在jpg图像上加文字解释,但是客户不是很满意,说是为了保持图片的完整性,文字不能加在jpg图片上,而要求在图片的下面再续出一行,上面加文字注释,然后再合为一个图片,我对图片处理这方面不是很了解,不知道imageen能不能实现这个功能,希望大家给予帮助!有源码更好,介绍别的控件也可以,多谢!

解决方案 »

  1.   

    可以的,你先加入一个背景层,在背景层上添加文字,文字位置,可以定义,然后在导入源图片注意不要盖上文字,最后合并层。
    imageenview1.assign(image1);
    imageenview1.io.bitman.cavsav.textout(x,y,'string');
    imageenview1.layersadd;
    imageenview1.io.loadfromjpeg(filename);
    imageenview1.layers.mearg(0,1)
    :)有些拼写可能不对
      

  2.   

    这个小问题,动态创建一个Lable,用lable来显示文字
    lable放在图片上
    刷新的时候要注意把lable放在图片上
      

  3.   

    可这样试试,TImage控件读入图片之后,把TImage长度放大一些,在空出的地方用GDI把文字作为图形写入,然后把整个TImage保存出JPG的图片。
      

  4.   

    to givemeliu(delphi英雄@@@) :
     愿意帮忙的话,麻烦你写出一个完整的代码to cdsgajxlp(起名很难)
     他们要求的不是把label放在图片上,而是放在图片的下面!to lextm(LeLe) 
     我没有描述清楚,这些图片是从数据库里读出来的多谢大家回复!
      

  5.   

    cdsgajxlp(起名很难) ( ) 信誉:100 的方法可行,你可以把创建lable时把它放在图片的下方不就行了吗?
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      bmp, bmp2: TBitMap;
      jpg: TJPEGImage;
      TextHeight: integer;
      Text: string;
      aRect: TRect;
    begin
      bmp := TBitMap.Create;
      bmp2 := TBitMap.Create;
      jpg := TJPEGImage.Create;
      try
        jpg.LoadFromFile('e:\a.jpg');
        bmp.Assign(jpg);
        bmp2.Canvas.Font.Assign(self.Font);
        TextHeight := bmp2.Canvas.TextHeight('A'); //获得字体高
        bmp2.Width := bmp.Width;
        bmp2.Height := bmp.Height + TextHeight; //设置新图像高
        bmp2.Canvas.Draw(0, 0, bmp); //画上原有图像    aRect := RECT(0, bmp2.Height - TextHeight, bmp2.Width, bmp2.Height); //获得文字区域
        Text := '123';
        DrawText(bmp2.Canvas.Handle, pchar(Text), length(Text), aRect, DT_CENTER or DT_WORDBREAK);    jpg.Assign(bmp2); //获得处理后的图像
        jpg.SaveToFile('e:\a1.jpg');
      finally
        bmp.Free;
        bmp2.Free;
        jpg.Free;
      end;
    //  canvas.Draw(0,0,bmp2);
    end;