将BMP位图转换为真彩色图标?(50分)

  • 主题发起人 主题发起人 bihai
  • 开始时间 开始时间
B

bihai

Unregistered / Unconfirmed
GUEST, unregistred user!
我这里有BMP2ICON,但都不是真彩色的图标,希望能得到真彩色的相关代码。
 
能否说得具体些?好象图标没有真彩吧。
 
圖標是有真彩色的,相關的工具也出來得非常多了,看看下面的鏈接你就知道了:
http://www.onlinedown.net/soft/1770.htm
 
关于ICO转换我些过一段代码(bmp->ico),贴给你,希望有用。

if(hBit == NULL) // hBit is BitMap Handle
return NULL;

CBitmap oBitmap;
oBitmap.Attach(hBit);

CBitmap oBMap;
BITMAP rBitMap;
oBitmap.GetBitmap( &rBitMap );
oBMap.CreateBitmapIndirect( &rBitMap );
BYTE a[4096];
DWORD len = oBitmap.GetBitmapBits (4096,a);
for (UINT i=0; i<len; i++)
{
a ^= a;
}
oBMap.SetBitmapBits( len, a);

HICON hIcon;
if (bTheBigIcon)
{
CImageList oImagelist;
oImagelist.Create(32, 32, TRUE, 1, 1);
oImagelist.Add(&amp;oBitmap, &amp;oBMap);

hIcon = oImagelist.ExtractIcon( 0 );
oImagelist.DeleteImageList();
}
else
{
CImageList oImagelist;
oImagelist.Create(16, 16, TRUE, 1, 1);
oImagelist.Add(&amp;oBitmap, &amp;oBMap);

hIcon = oImagelist.ExtractIcon( 0 );
oImagelist.DeleteImageList();
}
m_bIcon = false;
return hIcon;

 
to app2001:
用Delphi如何编bmp->ico?
 
你再试试看这个罗
procedure Bmp2Ico(bmp, ico: string); //bmp和ico是文件名
var
IconSizeX : integer;
IconSizeY : integer;
myBmp : TBitmap;
AndMask : TBitmap;
XOrMask : TBitmap;
IconInfo : TIconInfo;
Icon : TIcon;
begin
IconSizeX := GetSystemMetrics(SM_CXICON);
IconSizeY := GetSystemMetrics(SM_CYICON);

myBmp := TBitmap.Create;
myBmp.LoadFromFile(bmp);

AndMask := TBitmap.Create;
AndMask.Width := IconSizeX;
AndMask.Height := IconSizeY;
AndMask.Canvas.Brush.Color := clBlack;
AndMask.Canvas.Rectangle(0, 0, IconSizeX, IconSizeY);

XOrMask := TBitmap.Create;
XOrMask.Width := IconSizeX;
XOrMask.Height := IconSizeY;
StretchBlt(XorMask.Canvas.Handle, 0, 0, IconSizeX, IconSizeY,
myBmp.Canvas.Handle, 0, 0, myBmp.Width, myBmp.Height, SRCCOPY);

Icon := TIcon.Create;
IconInfo.fIcon := true;
IconInfo.xHotspot := 0;
IconInfo.yHotspot := 0;
IconInfo.hbmMask := AndMask.Handle;
IconInfo.hbmColor := XOrMask.Handle;
Icon.Handle := CreateIconIndirect(IconInfo);

AndMask.Free;
XOrMask.Free;
myBmp.Free;

Icon.SaveToFile(ico);
Icon.Free;
end;
 
后退
顶部