| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2883 人关注过本帖
标题:VC里面怎么样才能显示JPG等格式图片
只看楼主 加入收藏
wudong8866
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-10-9
收藏
 问题点数:0 回复次数:8 
VC里面怎么样才能显示JPG等格式图片

在VC里,怎么样才能够显示图片格式如JPG,GIF,PNG等,
请各位达人赐教!

搜索更多相关主题的帖子: JPG 格式 PNG GIF 
2007-10-26 12:00
wudong8866
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-10-9
收藏
得分:0 
怎么没有人帮我呀,

2007-10-26 12:45
余来
Rank: 6Rank: 6
等 级:贵宾
威 望:26
帖 子:956
专家分:18
注 册:2006-8-13
收藏
得分:0 
GDI+,或者OLE,VC这个东东就是麻烦。。显示jpg都复杂

IPicture* p=NULL;
IStream* s=NULL;
HGLOBAL hG;
void* pp;
FILE* fp;

// Read file in memory
fp = fopen(FileName,"rb");
if (!fp)
return NULL;

fseek(fp,0,SEEK_END);
int fs = ftell(fp);
fseek(fp,0,SEEK_SET);
hG = GlobalAlloc(GPTR,fs);
if (!hG)
{
fclose(fp);
return NULL;
}
pp = (void*)hG;
fread(pp,1,fs,fp);
fclose(fp);

CreateStreamOnHGlobal(hG,false,&s);
if (!s)
{
GlobalFree(hG);
return NULL;
}

OleLoadPicture(s,0,false,IID_IPicture,(void**)&p);

if (!p)
{
s->Release();
GlobalFree(hG);
return NULL;
}

s->Release();
GlobalFree(hG);

HBITMAP hB = 0;
p->get_Handle((unsigned int*)&hB);

// Copy the image. Necessary, because upon p's release,
// the handle is destroyed.
HBITMAP hBB = (HBITMAP)CopyImage( hB,IMAGE_BITMAP,0,0,LR_COPYRETURNORG );

p->Release();
return hBB;
}

然后
HBITMAP hbmp;
hbmp = LoadJPG( strFilePath );

if( hbmp != NULL)
{
m_bitmap.Detach();
m_bitmap.Attach(hbmp);
}
else
{
return;
}

2007-10-26 13:07
wudong8866
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-10-9
收藏
得分:0 
版主所说的我不是很明白,不过还是谢谢版主,如果代码加些注释就好了,或都有没有一个可以运行的程序,我自己去调试;我的邮箱:wudong8866@

2007-10-26 15:29
style
Rank: 2
等 级:论坛游民
帖 子:18
专家分:20
注 册:2005-11-29
收藏
得分:0 

11111111
2007-10-27 15:31
赵博闻
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2007-9-20
收藏
得分:0 
首先应该弄清楚两件事。第一:为什么要加载位图。即它的用途是什么。第二:如何实现
加载位图主要涉及到位图环境,位图对象,句柄,指针,以及两个函数LoadBitmap,和BitBIt
搞清楚函数的参数都是什么意思就能顺藤摸瓜,解决问题。
我可以告诉你个超简单的方法。但在工程应用中很局限。
方法一:
再要加载位图的位置(一般是对话框)拖放一个Picture控件,右击该控件再弹出的属性中巴下拉框中位图的属性改为Bitmap,然后在资源中添加要加载的位图,接着给控件创建一个变量bmp。在代码中一个Button事件,或初始化函数中写
bmp.LoadBitmap(IDB_BITMAP1);//括号里是图的名字,运行就加载了。

以上是处理图片的第一步基本满足了提问者的要求,但要做其它操作就麻烦多了,具体遇到在讨论吧

2007-10-30 16:53
wudong8866
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-10-9
收藏
得分:0 

我说的是显示JPG,不是位图呀,


2007-10-30 17:38
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
以下是引用wudong8866在2007-10-30 17:38:22的发言:

我说的是显示JPG,不是位图呀,

jpg是压缩了的位图,请你要明白这点



by 雨中飞燕 C/C++学习讨论群:46520219
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge)论坛:[/url] http://yzfy.org/
Blog: http://yzfy.programfan.com

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url] [url=http://blog.programfan.com/article.asp?id=24801]请不要写出非int声明的main函数[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=181314]C++编写的Windows界面游戏[/url]

2007-10-30 17:49
wudong8866
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-10-9
收藏
得分:0 

是一种有损压缩,所以显示会有些不一样,VC对JPG支持不是很好,所以.....


2007-10-31 12:03
快速回复:VC里面怎么样才能显示JPG等格式图片
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015290 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved