引用高人的解决方法为[ZT] ---------------------------------- 通过代码分析,查看Graphics单元 看看哪些地方调用了InvalidBitmapprocedure InvalidBitmap; begin InvalidGraphic(@SInvalidBitmap); end;procedure InvalidGraphic(Str: PResStringRec); begin raise EInvalidGraphic.CreateRes(Str); end;SInvalidBitmap = 'Bitmap image is not valid';
var
myicon:Ticon;
mybmp:Tbitmap;
myimage:Timagelist; //定义各子类对象;
begin
myicon:=Ticon.Create ; //构造对象;
mybmp:=Tbitmap.Create ;
try
mybmp.Assign(Image1.Picture );
myimage:=ImageList1.CreateSize(mybmp.Width ,mybmp.Height); //获取尺寸
try
myimage.AddMasked(mybmp,mybmp.TransparentColor );
myimage.GetIcon(0,myicon);
if self.Saveicon .Execute then
begin
myicon.SaveToFile(Saveicon.FileName );//save ICON file;
changetoicon.Visible :=false; //这个是按钮,目的是转换后,按钮"转换"定为不可见
end;
finally //异常处理;
myimage.Free;
end;
finally
myicon.Free ;
mybmp.Free;
end;
end;
-------------------------------------------------
1)通常是需要装载位图(bmp)文件时,你没有装载位图而是装载的其他图片文件,比如gif文件等。这种现象在使用image等控件时,就会出现
2)你可能是用了流来读取或设置, 也就是说你的流数据没有读正确哐写正确
3)你的bitmap头信息与dib数据不符合,被人为是无效的bitmap;分析你的代码,是不是dib大小变换了,忘了改bitmap头信息
----------------------------------
通过代码分析,查看Graphics单元
看看哪些地方调用了InvalidBitmapprocedure InvalidBitmap;
begin
InvalidGraphic(@SInvalidBitmap);
end;procedure InvalidGraphic(Str: PResStringRec);
begin
raise EInvalidGraphic.CreateRes(Str);
end;SInvalidBitmap = 'Bitmap image is not valid';