处理gif图形后,得到的gif图片失去了透明特性,如何解决?急! ( 积分: 100 )

  • 主题发起人 主题发起人 prosky
  • 开始时间 开始时间
P

prosky

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个gif透明图片,经过处理(添加文字)后,得到的图片不在透明了,原来透明的地方变成了白色,怎么解决这个问题?
高手帮我调试一下啊。感谢!感谢!
程序源代码如下:
//RxGIFAnimator1是事先载入的gif图片,RxGIFAnimator2是处理后生成的gif图片
//使用了RxGIFAnimator1.image.Transparent:=ture;bmp.Transparent:=true;RxGIFAnimator2.image.Transparent:=ture;都不管用。

unit main;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Animate, GIFCtrl;

type
TForm1 = class(TForm)
RxGIFAnimator1: TRxGIFAnimator;
Button1: TButton;
RxGIFAnimator2: TRxGIFAnimator;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
bmp :TBitMap;
begin
bmp := TBitMap.Create;
bmp.Assign(RxGIFAnimator1.Image);
//处理图片
bmp.Canvas.Brush.Style := bsClear;
bmp.Canvas.Font.Color := clRed;
bmp.Canvas.Font.Size := 12;
bmp.Canvas.TextOut(20,6,'添加文字');

RxGIFAnimator2.Image.Assign(bmp);

bmp.Free;

end;

end.
 
有一个gif透明图片,经过处理(添加文字)后,得到的图片不在透明了,原来透明的地方变成了白色,怎么解决这个问题?
高手帮我调试一下啊。感谢!感谢!
程序源代码如下:
//RxGIFAnimator1是事先载入的gif图片,RxGIFAnimator2是处理后生成的gif图片
//使用了RxGIFAnimator1.image.Transparent:=ture;bmp.Transparent:=true;RxGIFAnimator2.image.Transparent:=ture;都不管用。

unit main;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Animate, GIFCtrl;

type
TForm1 = class(TForm)
RxGIFAnimator1: TRxGIFAnimator;
Button1: TButton;
RxGIFAnimator2: TRxGIFAnimator;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
bmp :TBitMap;
begin
bmp := TBitMap.Create;
bmp.Assign(RxGIFAnimator1.Image);
//处理图片
bmp.Canvas.Brush.Style := bsClear;
bmp.Canvas.Font.Color := clRed;
bmp.Canvas.Font.Size := 12;
bmp.Canvas.TextOut(20,6,'添加文字');

RxGIFAnimator2.Image.Assign(bmp);

bmp.Free;

end;

end.
 
我没看你的代码,但我有过与你一样的要求。
我的处理方法是在Gif的image控件上加一个Label,把这个Label设为透明,要写什么字就写到Label的Caption了国。
 
gif图片透明可以到我的网站上看看,8 bmp2Gif 把多个bmp文件生成gif动画,支持添加字幕,支持透明 dxmylove@yahoo.com.cn,qq:171833017,http://www.websamba.com/dxmylove
,如果不能正常下载,可直接联系我
 
八百里加急文件,大家快来看看啊!超急,超急,超急!!!DELPHI里怎么统计总分(总成绩),大家看我下面的代码:
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select 学号,姓名,成绩 from xscj where 学号=:xuehao');
adoquery2.Parameters.ParamValues['xuehao']:=str;
adoquery2.Open;
if str<>adoquery2.Lookup('学号',str,'学号')
then begin
messagedlg('您输入的学号不存在!'+#10+'或者输入了非法字符,学号必须由数字0-9组成,请重新输入!!',mtwarning,[mbOK],0);
edit2.Text:='';
edit2.Focused;
richedit1.Text:='';
dbgrid2.Refresh;
adoquery2.Close;
adoquery2.SQL.Clear;
end
else begin
adoquery2.First;
for i:=1 to adoquery2.RecordCount do
begin
chengji:=adoquery2.Lookup('学号',str,'成绩');
j:=j+1;
zongfen:=zongfen+chengji;
if (chengji>60)and(chengji<80)
then jige:=jige+1;
if chengji>=80
then youxiu:=youxiu+1;
if chengji>=60
then dabiao:=dabiao+1;
adoquery2.Next;
end;
pingjunfen:=zongfen/j;
jigelv:=jige/j;
youxiulv:=youxiu/j;
dabiaolv:=dabiao/j;
 
不好意思,打错了,以后大家多多关照啊 !!!!
 
to dedema:我要的是生成的gif图片,不是form中的效果,我那段代码只是调试用的,好好看看我的代码
to 一生中最爱:我要的源代码。
to Sunshine168:请不要在我这个帖子里提问,一方面给我带来了不便,另一方面也会影响给你的答复。
 
可以有偿提供源码,直接联系我
 
还改要钱!!!太狠了吧!!!钻钱眼里了!!!
我这里有
http://www.hf110.com/Article/jswz/bcjs/ozh/200504/889.html
 
问题解决!只想到了直接修改gif图片二进制文件的方法来透明,其中用到了pengxuan7591指的网页中的相关知识,表示感谢。
 
后退
顶部