看流星社区

 找回密码
 注册账号
查看: 1734|回复: 1

关于VC++6.0插入BMP图片资源的问题

[复制链接]

该用户从未签到

发表于 2014-7-16 08:30:17 | 显示全部楼层 |阅读模式
我把电脑里的一张JPG图片复制到桌面上并且把它的扩展名改成了bmp之后,在VC++6.0里,通过菜单栏里的“插入”——“资源”——“引入”,想把它加入到工程里面,但是却插入失败,如图所示:
请问:这是为什么?要怎么样才能把电脑里任意一张图片加入到工程里面?或者说怎么样的图片才算是有效的?(引入的好像都不行,我换了好几张图片了)
如果您的答案有效的话我再追加30分。
哈哈,嗯嗯,真的有用,那我还想问下,就是用windows自带的画图程序打开这个jpg文件,然后选择另存为,在另存为对话框中选择保存格式为bmp格式的时候,选哪个好一点,它上面有“单色位图”、“16色位图”、“256色位图”、“24位位图”四个选择。选哪个好一点,是不是没什么较大的影响?

该用户从未签到

发表于 2014-7-16 08:30:27 | 显示全部楼层
vc不能导入jpg文件,应该把jpg文件转化成bmp文件,但是这里所说的转换不是说就改一个后缀名就好了的,修改后缀名为bmp的话,它的实际文件格式还是jpg
要想把文件改为bmp的话,最简单的一种方法就是用windows自带的画板打开这个jpg文件,然后选择另存为,在另存为对话框中选择保存格式为bmp格式,这样保存的图片才能成功导入到vc中

一般用默认就够了,选择不同的话图片显示效果会不同,看你程序里面用这个图片的清晰程度需求了

该用户从未签到

发表于 2014-7-16 08:30:47 | 显示全部楼层
1、通过导入位图资源的方式,加载位图,当图片质量高时,不能预览,但是在资源视图里面已经存在,然后可以像自定义位图那样使用;
2、若使用的位图超过256色,则VC编译器打不开这些位图资源;
3、VC正常创建、处理的位图只有单色,16色,256色,不支持24位的位图格式;
注:这里涉及到的都是位图文件(*.bmp),通过导入资源的方式,VC不支持jpg格式资源,不过可用代码实现加载jpg或其他格式的图像文件;

//下边是一个从磁盘读取任一BMP文件的函数,然后显示在窗体指定坐标上。
OnOpenBMPImage()
{
CFileDialog fileDlg(true,(LPCTSTR)_T("BMP file"),(LPCTSTR)_T("*.bmp"),OFN_HIDEREADONLY,(LPCTSTR)_T("BMP FILE|*.bmp"),NULL);
if(fileDlg.DoModal() == IDOK)
{
  HBITMAP  m_hBmp=(HBITMAP)LoadImage(NULL,fileDlg.GetPathName(),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
  CClientDC dc(this);
  CBitmap bmp;
  bmp.Attach(m_hBmp);
  CDC memdc;
  memdc.CreateCompatibleDC(&dc);
  memdc.SelectObject(&bmp);
  BITMAP BitInfo;
  bmp.GetBitmap(&BitInfo);
  int x = BitInfo.bmWidth;
  int y = BitInfo.bmHeight;
  dc.BitBlt(0,0,x,y,&memdc,0,0,SRCCOPY);
  bmp.Detach();
  memdc.DeleteDC();
}
UpdateData(false);
}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-17 19:37

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表