怎样在ICO和BMP之间转换(100分)

  • 主题发起人 主题发起人 xieyj
  • 开始时间 开始时间
X

xieyj

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样在ICO和BMP之间转换
 
呵呵,以前我也碰到这个问题,后来朋友告诉我一个很简单的方法,通过ImageList可以解决。
ImageList中有GetIcon,GetBitmap可以得到你想到的东西。
 
procedure ConvertIconToBitmap( IcoFile,BmpFile : string );
var
Icon1 : TIcon;
Bitmap1 : TBitmap;
begin
Icon1 := TIcon.Create;
Icon1.LoadFromFile(IcoFile);
Bitmap1 := TBitmap.Create;
Bitmap1.Height := Icon1.Height;
Bitmap1.Width := Icon1.Width;
Bitmap1.Canvas.Draw(0, 0, Icon1);
Bitmap1.SaveToFile(BmpFile);
Bitmap1.Free;
Icon1.Free;
end;

--------------------------------------------------------------------
function BitmapToIcon(Bitmap: TBitmap): TIcon;
var
IconSizeX, IconSizeY : integer;
IconInfo: TIconInfo;
IconBitmap, MaskBitmap: TBitmap;
x, y: Integer;
TransparentColor: TColor;
begin
IconSizeX := GetSystemMetrics(SM_CXICON);
IconSizeY := GetSystemMetrics(SM_CYICON);
IconBitmap:= TBitmap.Create;
IconBitmap.Width:= IconSizeX;
IconBitmap.Height:= IconSizeY;
IconBitmap.Canvas.StretchDraw(Rect(0, 0, IconSizeX, IconSizeY), Bitmap);
IconBitmap.TransparentColor:= Bitmap.TransparentColor;
TransparentColor:= IconBitmap.TransparentColor and $FFFFFF;
MaskBitmap:= TBitmap.Create;
MaskBitmap.Assign(IconBitmap);
for y:= 0 to IconSizeY - 1 do
for x:= 0 to IconSizeX - 1 do
if IconBitmap.Canvas.Pixels[x, y] = TransparentColor then
IconBitmap.Canvas.Pixels[x, y]:= clBlack;
IconInfo.fIcon:= True;
IconInfo.hbmMask:= MaskBitmap.MaskHandle;
IconInfo.hbmColor:= IconBitmap.Handle;
Result:= TIcon.Create;
Result.Handle:= CreateIconIndirect(IconInfo);
MaskBitmap.Free;
IconBitmap.Free;
end;
 
乱弹
ico---->bmp
1。PrintScreen
2。用MSPAINT把它取出来

bmp---->ico
1。PrintScreen
2。用pb6自带的ImageEditor的照相机把它拍下来。
 
我的方法也是和小人物差不多,前段时间写了一个这东西,
包括icon->bmp,bmp->icon,jpeg->bmp,bmp->jpeg等等,
如果需要的话,发信到我信箱,我把源文件发给你!
 
给我一个源程序吧,多谢!
xieyj@esquel.com
 
贪得无厌的家伙,还不给分??
 
不好意思,你再跟我说一下
BitmapToIcon怎么可以调用它,前面那个我会调了,如果这个跟我说了,我马上加分
 
BitmapToIcon怎么可以调用它
!@#%!#$%@#$%^!@#$%2345
oh my god
 
哦,我的天!
老大们,这个调用很难吗?
I 服了 YOU !!!

procedure TForm1.Button1Click(Sender: TObject);
var aBitmap: TBitmap;
aIcon:TIcon;
begin
aBitmap:=TBitmap.Create;
aIcon:=TIcon.Create;
try
aBitmap.LoadFromFile('C:/Bitmap_1.bmp');
aIcon.Assign(BitmapToIcon(abitmap));
aicon.SaveToFile('C:/aa.ico');
finally
abitmap.Free;
aicon.Free;
end;
showmessage('ok');
end;
 
初学者吗?得一步一步的@_@
 
后退
顶部