获得jpg的rgb后,如何显示图形?

nj_draker 2003-12-12 04:13:32

我是想知道是否就是简单的用setpix写点来实现?

如果是,这个实现过程中是否存在酸法问题,也就是速度快慢问题?
...全文
51 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wgstar 2003-12-14
上面还是有点问题,因为是从我的程序的各个部分拷到一起的,变量明都没统一,楼主自己看看改过来吧。
  • 打赏
  • 举报
回复
wgstar 2003-12-14
sorry!
还没改好呢,不小心就回复了,下面的代码才是正确的
BITMAPINFOHEADER bmih;
int height=XXX;
int width=XXX;
BYTE* pImgData=XXX;//你只需要修改上面的三个变量即可
int ZeroWidth=(((width*24) + 31) / 32 * 4)-width*3;
memset(&bmih,0,sizeof(bmih));
bmih.biSize=sizeof(bmih);
bmih.biHeight=height; //
bmih.biWidth=width; //
bmih.biSizeImage=height*width*3+ZeroWidth*bmih.biHeight;
bmih.biBitCount=24;
bmih.biPlanes=1;
bmih.biXPelsPerMeter=3780;

SetDIBitsToDevice(m_memDC->m_hDC,
0,0,
m_bmih.biWidth,m_bmih.biHeight,
0,0,
0,m_bmih.biHeight,
pImgData,
(BITMAPINFO*)&m_bmih,
DIB_RGB_COLORS);

当然上面的代码只能对24位图操作,如是其它的图,需要作相应的变动
  • 打赏
  • 举报
回复
wgstar 2003-12-14
如果是24位的图像
//初始化信息头
memset(&bmih,0,sizeof(bmih));
bmih.biSize=sizeof(bmih);
bmih.biHeight=m_LastPos.y-m_FirstPos.y;
bmih.biWidth=m_LastPos.x-m_FirstPos.x;
bmih.biSizeImage=height*width*3+ZeroWidth*bmih.biHeight;
bmih.biBitCount=24;
bmih.biPlanes=1;
bmih.biXPelsPerMeter=3780;

SetDIBitsToDevice(pDC->m_hDC,
0,0, m_bmih.biWidth,m_bmih.biHeight,
0,0,
0,m_bmih.biHeight,
m_pImgData,
(BITMAPINFO*)&m_bmih,
DIB_RGB_COLORS);
  • 打赏
  • 举报
回复
nj_draker 2003-12-13

用点写可以了,但是太慢,效果不好, 是否需要用到调色板?
  • 打赏
  • 举报
回复
nj_draker 2003-12-12

我现在可以用setpixel显示了
  • 打赏
  • 举报
回复
nj_draker 2003-12-12


你是说将解出的数据,组织成BYTE bits[] ,然后创建HBITMAP,再进行BitBlt显示?
  • 打赏
  • 举报
回复
eastred 2003-12-12
dc.BitBlt(r.left,r.top,bitSize.bmWidth,bitSize.bmHeight,&memdc,0,0,SRCCOPY);
  • 打赏
  • 举报
回复
孤必有邻 2003-12-12
用SetPixcel()显然效率太低,显示位图通常是用这样一组函数:
BitBlt,StretchBlt,StretchDIBits。
参数中要求有一个BITMAPINFOHEADER,你要根据图像的实际大小来设置。
这里有个读取位图并显示的例子,可以参考:
http://www.yangning.com/cgi-bin/topic.cgi?forum=1&topic=82&show=0
  • 打赏
  • 举报
回复
相关推荐
发帖
图形处理/算法
加入

1.9w+

社区成员

VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
申请成为版主
帖子事件
创建了帖子
2003-12-12 04:13
社区公告
暂无公告