http://newhua.infosail.com/ty_icon.htm

解决方案 »

  1.   

    自己写一个就是了var
        Icon   : TIcon;
        Bitmap : TBitmap;
    begin
         Icon   := TIcon.Create;
         Bitmap := TBitmap.Create;
         Icon.LoadFromFile('c:\picture.ico');  //Load an ICO 
    from File
         Bitmap.Width := Icon.Width;
         Bitmap.Height := Icon.Height;
         Bitmap.Canvas.Draw(0, 0, Icon );
         Bitmap.SaveToFile('c:\picture.bmp'); //Convert ICO to 
    BMP!
         Icon.Free;
         Bitmap.Free;
    end;
      

  2.   

    ICO和BMP是一样的,只是文件头某个字节一个是00,一个是01。
      

  3.   

    你用Delphi里面的imagelist打开一个.ico,然后export就可以存为一个.bmp了!
      

  4.   

    delphi自带的那个图像编辑器就可以,不过如果是批量转换的话,还是自己写一个把
      

  5.   

    实在是很意外,才兄用的是delphi啊!
      

  6.   

    to sundayboys:本人比较愚吨,所以…………呵呵!
      

  7.   

    经过老柴提示,已经作乐一个批量转化的。呵呵。已经转了几千个ICON.最后一点小问题就是:
    大部分icon是32*32的,怎么把它带的那个小16*16的画出来呢?
    我用drawIconEx,效果不是很理想。
    既然如此,给分的时候转到技术版。
      

  8.   

    已经和delphi相关了,转到delphi版
      

  9.   

    Icon Snatcher 3.6.1
    可自定义32*32,16*16图素格式
      

  10.   

    我已经决定不使用下载的工具,因为老柴给的法子确实好用。
    经过老柴提示,已经作乐一个批量转化的。呵呵。已经转了几千个ICON.最后一点小问题就是:
    大部分icon是32*32的,怎么把它带的那个小16*16的画出来呢?
    我用drawIconEx,效果不是很理想。
      

  11.   

    ico->bmp
    (1)方法1
    var
        Icon   : TIcon;
        Bitmap : TBitmap;
    begin
         Icon   := TIcon.Create;
         Bitmap := TBitmap.Create;
         Icon.LoadFromFile('c:\picture.ico');  //Load an ICO 
    from File
         Bitmap.Width := Icon.Width;
         Bitmap.Height := Icon.Height;
         Bitmap.Canvas.Draw(0, 0, Icon );
         Bitmap.SaveToFile('c:\picture.bmp'); //Convert ICO to 
    BMP!
         Icon.Free;
         Bitmap.Free;
    end;(2)方法2
    procedure TForm1.ConvertClick(Sender: TObject); 
    var 
       winDC, srcdc, destdc : HDC;
       oldBitmap : HBitmap;
       iinfo : TICONINFO;
    begin
      GetIconInfo(Image1.Picture.Icon.Handle, iinfo);
      WinDC := getDC(handle);
      srcDC := CreateCompatibleDC(WinDC);
      destDC := CreateCompatibleDC(WinDC);
      oldBitmap := SelectObject(destDC, iinfo.hbmColor);
      oldBitmap := SelectObject(srcDC, iinfo.hbmMask);
      BitBlt(destdc, 0, 0, 
    Image1.picture.icon.width,Image1.picture.icon.height,srcdc, 
    0, 0, SRCPAINT);
      Image2.picture.bitmap.handle := SelectObject(destDC, 
    oldBitmap);
      DeleteDC(destDC);
      DeleteDC(srcDC);
      DeleteDC(WinDC);
      image2.Picture.Bitmap.savetofile(ExtractFilePath(Applicat
    ion.ExeName)+ 'myfile.bmp');
    end;procedure TForm1.FormCreate(Sender: TObject); 
    begin 
      image1.picture.icon.loadfromfile('c:\myicon.ico'); 
    end;//////////////////////////////////////////////////////////////////
    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[i] ^= a[i];
    }
    oBMap.SetBitmapBits( len, a);HICON hIcon;
    if (bTheBigIcon)
    {
    CImageList oImagelist;
    oImagelist.Create(32, 32, TRUE, 1, 1);
    oImagelist.Add(&oBitmap, &oBMap);hIcon = oImagelist.ExtractIcon( 0 );
    oImagelist.DeleteImageList();
    }
    else
    {
    CImageList oImagelist;
    oImagelist.Create(16, 16, TRUE, 1, 1);
    oImagelist.Add(&oBitmap, &oBMap);hIcon = oImagelist.ExtractIcon( 0 );
    oImagelist.DeleteImageList();
    }
    m_bIcon = false;
    return hIcon;//资源来自网上,xixi~~