有办法把图标的颜色去掉吗?(100分)

  • 主题发起人 主题发起人 fxb
  • 开始时间 开始时间
F

fxb

Unregistered / Unconfirmed
GUEST, unregistred user!
有办法把图标的颜色去掉吗?变成黑白的。
 
可以,自己用Image Edit打开描一下,反正图标也不大。
如果编程的话需要自己判断每处的颜色了
 
你的问题有些麻烦,如果你的图标是256色的话,用Image Edit 描应该会有问题,
我也在找这样一种工具,有谁可以将真彩24位的BMP,转成256色的ICON,我也出分,
我转的后果就是没办法做成透明的图标 :(

 
我的情况恰恰相反,我用屏幕拷贝的图象(24bit)粘贴到Image Edit里编辑。显示是彩色
存储完就变黑白的了。用photoshop拷贝256、16色图象下来再粘贴也一样。谁能解释?
 
有谁见过256色的图标?Image Edit新建一个,只有16色的。
烂泥:你的分不用给了。
 
tinytao:
你试试 Microangelo 么?作出的图标可以24色、256色、真彩色。
 
当然有了,不然你哪能看到那么漂亮的IE的图标啊
用Image Edit兴建的最多只有16色,但是可以打开256等图标,换一个工具就是了


>>有办法把图标的颜色去掉吗?变成黑白的。
把图标先转成BMP,在用工具把BMP编程双色的,在转成ICO,应该可以


找了一个做透明图标的办法,搞定:用Photoshop将位图导成GIF,在转成ICO就可以了,
直接用位图转,老是没办法转成透明的,应为转换后底色就不是255,255,255)






 
Microangelo就能实现吧!
就不用动用宰牛刀了吧:-)
 
让我给你一个圆满的答复:
procedure TForm1.Monochrome(Icon: TIcon);
var
Bitmap, Mask: TBitmap;
x, y: integer;
Color: Longint;
R, G, B, Gr: byte;
ImageList: TImageList;
begin
Bitmap := TBitmap.Create;
Mask := TBitmap.Create;
ImageList := TImageList.CreateSize(32, 32);
ImageList.AddIcon(Icon);
ImageList.GetBitmap(0, Bitmap);//以上三行实现Ico到Bitmap的转换
with Bitmap.Canvas do
for x := Cliprect.Left to Cliprect.Right do
for y := Cliprect.Top to Cliprect.Bottom do
begin
Color := ColorToRGB(Pixels[x, y]);
B := (Color and $FF0000) shr 16;
G := (Color and $FF00) shr 8;
R := (Color and $FF);
Gr := Trunc(R*0.19 + G*0.44 + B*0.37);
Pixels[x, y] := Gr shl 16 or Gr shl 8 or Gr;
end;//以上实现黑白图象
Mask.Assign(Bitmap);
Mask.Mask(clWhite);//为透明图象设置掩码位图
ImageList.Height := Bitmap.Height;
ImageList.Width := Bitmap.Width;
ImageList.Clear;
ImageList.Add(Bitmap, Mask);
ImageList.GetIcon(0, Icon);//以上实现Bitmap到Ico的转换
ImageList.Free;
Bitmap.Free;
Mask.Free;
end;
 
谁可以将真彩24位的BMP,我要一份
 
冰凌真棒
不过我不知道是否有更简单的办法,比如:
事先在TICO1中LOAD 原来的图标,
新建一TICON2,它的属性有没有Monochrome之类的,设定这一属性,然后用
TICON2.ASSIGN(tico1.icon),不过我不知道,因为我手头没DELPHI,(我已经好久没用了)
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
592
import
I
I
回复
0
查看
748
import
I
后退
顶部