MFC将图片转换成ico文件

#include "atlimage.h"
HICON ToIcon(int cx,int cy)
{
	CImage img;
	img.Load("cap.bmp");//可以是jpg,png,gif格式图片
	int w = img.GetWidth();
	int h = img.GetHeight();

	CDC * dc = CDC::FromHandle(GetWindowDC(GetDesktopWindow()));
	CDC mdc;
	mdc.CreateCompatibleDC(dc);
	CBitmap bmp;
	bmp.CreateCompatibleBitmap(dc,cx,cy);
	HBITMAP hOldBmp = (HBITMAP)mdc.SelectObject(bmp);
	img.StretchBlt(mdc.m_hDC,0,0,cx,cy,0,0,w,h,SRCCOPY);

	HBITMAP hBmp = (HBITMAP)bmp.m_hObject;

	ICONINFO iconinfo;
	memset(&iconinfo,0,sizeof(iconinfo));
	iconinfo.fIcon = 1;
	iconinfo.hbmColor = hBmp;
	iconinfo.hbmMask = hBmp;
	iconinfo.xHotspot = 0;
	iconinfo.yHotspot = 0;

	HICON hIcon = CreateIconIndirect(&iconinfo);//获取HICON
	/*if(hIcon)
	{
		dc->DrawIcon(0,0,hIcon);
	}*/
	img.Detach();

	PICTDESC pictdesc;
	memset(&pictdesc,0,sizeof(pictdesc));
	pictdesc.cbSizeofstruct = sizeof(pictdesc);
	pictdesc.picType = PICTYPE_ICON;
	pictdesc.icon.hicon = hIcon;

	IPicture * pPic = NULL;
	int ret = OleCreatePictureIndirect(&pictdesc,IID_IPicture,1,(LPVOID*)&pPic);
	
	LPSTREAM pStream = 0;
	CreateStreamOnHGlobal(0,TRUE,&pStream);

	LONG size = 0;
	pPic->SaveAsFile(pStream,TRUE,&size);

	//这步非常重要
	///
	LARGE_INTEGER li;  
	li.HighPart =0;  
	li.LowPart =0;  
	ULARGE_INTEGER ulnewpos;  
	pStream->Seek( li,STREAM_SEEK_SET,&ulnewpos);
	///

	HANDLE hFile = CreateFile("1.ico",GENERIC_ALL,0,0,CREATE_ALWAYS,0,0);//生成ico文件
	if(hFile)
	{
		char * buf = new char[size];
		memset(buf,0,size);
		ULONG nRead = 0;
		pStream->Read(buf,size,&nRead);
		ULONG nWrited = 0;
		WriteFile(hFile,buf,nRead,&nWrited,0);
		CloseHandle(hFile);
	}
	return hIcon;
}

  

转载于:https://www.cnblogs.com/consuvi/p/5558726.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Win10ico文件是指Windows 10操作系统中的图标文件。在Windows操作系统中,图标文件具有ico文件格式,用于表示和显示各种应用程序、文件夹、系统设置等的图标。 Win10ico文件大全是指收集和提供Windows 10操作系统中所有图标文件的资源。这些图标文件包括操作系统自带的默认图标,以及用户自定义的图标。 Win10ico文件大全的作用主要有以下几点: 1. 个性化定制:通过替换系统默认图标,可以为应用程序、文件夹等元素赋予个性化的图标,使整个操作系统界面更加独特和符合个人喜好。 2. 提高可视化识别:图标文件能够为不同类型的应用程序、文件夹等提供独特的视觉识别标志,使用户更容易辨认和操作。 3. 美化界面:一些用户通过下载和使用美观的图标文件,可以使系统界面更加美观和精致,提升用户体验。 在使用Win10ico文件大全时,用户可以通过各种途径获取这些图标文件,比如在网上搜索、浏览下载网站或者使用一些专门存储和分享图标文件的平台等。用户可以按照自己的需求选择合适的图标文件,并将其应用到相应的元素上。 需要注意的是,在使用Win10ico文件大全时,用户应确保下载的图标文件来源可信,避免下载安装带有恶意代码的文件。此外,为了保证系统的稳定性和兼容性,建议用户在替换系统默认图标前备份相关文件,以防出现意外情况。 ### 回答2: Win10ICO文件大全是指适用于Windows 10操作系统的图标文件集合。ICO文件是Windows操作系统中用于图标显示的文件格式,常见于桌面图标、文件夹图标、应用程序图标等各个方面。 Win10ICO文件大全包含了丰富多样的图标,可以满足用户在Windows 10系统中个性化设置的需求。它们可以使用户的桌面和文件夹更加美观、个性化,并且方便用户识别和操作不同类型的文件。 这些ICO文件可以通过多种方式获取和使用。首先,用户可以通过互联网搜索或访问一些专门提供图标资源的网站,如IconArchive、Flaticon等来获取。这些网站提供了大量的免费ICO图标供用户下载和使用。 其次,用户还可以通过安装一些图标软件来拓展和管理ICO文件。这些软件如IconPackager、IconWorkshop等,提供了丰富的ICO图标库和灵活的图标管理功能,使用户可以根据个人需求轻松更改和调整图标。 此外,用户还可以自定义ICO图标。Windows 10操作系统允许用户选择自己喜欢的图片并将其换为ICO格式,以替换原始图标。用户只需要右键单击目标文件文件夹,选择“属性”-“自定义”-“更改图标”,然后选择自定义的ICO文件即可实现替换。 综上所述,Win10ICO文件大全是为Windows 10操作系统设计的图标文件集合,可以通过互联网下载、安装图标软件或自定义生成,用于美化桌面、文件夹和应用程序图标,提升用户个性化设置体验。 ### 回答3: Win10ico文件是一种常见的图标文件格式,用于存储Windows 10操作系统中的图标。这些图标可用于代表文件文件夹、应用程序和其他系统元素。 Win10ico文件大全指的是一个收录了大量Win10ico图标的资源库或图标集,用户可以通过访问该资源库来获取所需的图标。 Win10ico文件大全通常包含各种种类的图标,如文件夹图标、应用程序图标、硬盘图标等。这些图标具有不同的设计风格和颜色,使用户可以根据自己的需求选择合适的图标来美化他们的计算机界面。 获取Win10ico文件大全的方法有多种。一种常见的方法是从图标设计网站或图标资源网站下载。这些网站通常提供免费或付费的Win10ico文件大全,用户可以根据自己的需求选择下载。 另一种获取Win10ico文件大全的方法是使用专业的图标编辑软件或图标制作工具来创建自定义的图标。用户可以使用这些工具将自己的设计或图片换为Win10ico文件,并保存到自己的计算机或共享到网络上,以供他人使用。 总之,Win10ico文件大全是一种包含了大量Win10操作系统中常用图标的资源库。用户可以通过下载或自行制作这些图标来美化个人计算机界面,使其更加个性化和吸引人。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值