![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
关于VC++6.0插入BMP图片资源的问题
我把电脑里的一张JPG图片复制到桌面上并且把它的扩展名改成了bmp之后,在VC++6.0里,通过菜单栏里的“插入”——“资源”——“引入”,想把它加入到工程里面,但是却插...
我把电脑里的一张JPG图片复制到桌面上并且把它的扩展名改成了bmp之后,在VC++6.0里,通过菜单栏里的“插入”——“资源”——“引入”,想把它加入到工程里面,但是却插入失败,如图所示:
请问:这是为什么?要怎么样才能把电脑里任意一张图片加入到工程里面?或者说怎么样的图片才算是有效的?(引入的好像都不行,我换了好几张图片了)
如果您的答案有效的话我再追加30分。
哈哈,嗯嗯,真的有用,那我还想问下,就是用windows自带的画图程序打开这个jpg文件,然后选择另存为,在另存为对话框中选择保存格式为bmp格式的时候,选哪个好一点,它上面有“单色位图”、“16色位图”、“256色位图”、“24位位图”四个选择。选哪个好一点,是不是没什么较大的影响? 展开
请问:这是为什么?要怎么样才能把电脑里任意一张图片加入到工程里面?或者说怎么样的图片才算是有效的?(引入的好像都不行,我换了好几张图片了)
如果您的答案有效的话我再追加30分。
哈哈,嗯嗯,真的有用,那我还想问下,就是用windows自带的画图程序打开这个jpg文件,然后选择另存为,在另存为对话框中选择保存格式为bmp格式的时候,选哪个好一点,它上面有“单色位图”、“16色位图”、“256色位图”、“24位位图”四个选择。选哪个好一点,是不是没什么较大的影响? 展开
3个回答
展开全部
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);
}
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);
}
展开全部
转成24位的比较好。其他两个会有色彩损失。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
vc不能导入jpg文件,应该把jpg文件转化成bmp文件,但是这里所说的转换不是说就改一个后缀名就好了的,修改后缀名为bmp的话,它的实际文件格式还是jpg
要想把文件改为bmp的话,最简单的一种方法就是用windows自带的画板打开这个jpg文件,然后选择另存为,在另存为对话框中选择保存格式为bmp格式,这样保存的图片才能成功导入到vc中
一般用默认就够了,选择不同的话图片显示效果会不同,看你程序里面用这个图片的清晰程度需求了
要想把文件改为bmp的话,最简单的一种方法就是用windows自带的画板打开这个jpg文件,然后选择另存为,在另存为对话框中选择保存格式为bmp格式,这样保存的图片才能成功导入到vc中
一般用默认就够了,选择不同的话图片显示效果会不同,看你程序里面用这个图片的清晰程度需求了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询