利用CBitmap将图像快速显示到屏幕上

原创 2007年10月07日 18:22:00

正在做一个图像处理的类库,任意图像类型的文件利用类库读入后都存为一个固定的格式,保证程序的可扩展性。在编写的过程中需要将图像显示到屏幕上,由于自己写的将图像所有像素绘制到CDC上的程序速度总不是很理想,因此想到了一个很经典的类——CBitmap类。以下是程序中实现显示到场景的方法。

其中pDC为类的成员变量,在拷贝构造函数中已经赋值。IMAGEBITS结构是自定义的图像结构体,包含4个BYTE成员,分别表示红色分量、绿色分量、蓝色分量、保留位。该IMAGEBITS中像素顺序统一为BMP图像文件顺序。

void CWindowGraph::SetImage(int nX,int nY,long nHeight,long nWidth,IMAGEBITS *pstBits)
{
 CBitmap m_Bitmap;
 long nSize=nWidth*nHeight*4;
 BYTE *pbBits=new BYTE[nSize];
 CDC *pMemDC=new CDC;
 long i=0,nCount=nSize/4;
 for (i=0;i<nSize;i+=4)   {   //将Bmp文件序列变换为显示序列
  nCount--;
  pbBits[i]=pstBits[nCount].c_R;
  pbBits[i+1]=pstBits[nCount].c_G;
  pbBits[i+2]=pstBits[nCount].c_B;
  pbBits[i+3]=pstBits[nCount].c_Flag;
  
 }
 m_Bitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
 m_Bitmap.SetBitmapBits(nSize,pbBits);
 pMemDC->CreateCompatibleDC(pDC);
 pMemDC->SelectObject(&m_Bitmap);
 pDC->BitBlt(nX,nY,nWidth,nHeight,pMemDC,0,0,SRCCOPY);
 return ;
}

 图像显示效果如下:

[Image]

mfc 利用HBITMAP 和CBITMAP 显示位图文件

显示位图文件有n中方法: 1 利用双缓冲技术; 源码: void showBMP() { CString   str;      CString   filter="B...
  • feiren127
  • feiren127
  • 2011年10月22日 21:54
  • 3269

CBitmap对象直接加载外部图像的方法

在初始化CBitmap对象时,常用Cbitmap::LoadBitmap,即如下两种: BOOL LoadBitmap(LPCTSTR lpszRecourceName); BOOL Lo...
  • huangxy10
  • huangxy10
  • 2011年12月20日 20:00
  • 7899

详解CreateCompatibleBitmap 的使用

原文地址:的使用" style="text-decoration:none; color:rgb(74,101,111)">CreateCompatibleBitmap 的使用作者:爱ric 详...
  • chenjie863
  • chenjie863
  • 2014年02月21日 09:11
  • 2429

CBitmap位图类

类CBitmap封装了Windows图形设备接口(GDI)中的位图,并且提供了操纵位图的成员函数。使用CBitmap对象之前要先初始化CBitmap对象。 构造函数 CBitmap 构造一个C...
  • milanleon
  • milanleon
  • 2014年03月17日 09:37
  • 1416

图形操作类CBitmap 把内存数据输出到PIC控件

(1):复制元数据到 HBItmap HBITMAP CAviTestDlg::BufferToHBITMAP(LPSTR m_pBMPBuffer) { HBITMAP               ...
  • wishchin
  • wishchin
  • 2013年10月21日 16:01
  • 1036

CBitmap位图操作大集合

   显示位图  在Visual C++6.0中,显示位图的方法及过程如下:   1. 显示程序资源中的位图(位图的所有数据均存在于可执行文件中)   (1)从资源中装入位图  ● 定义位图对象数据成...
  • chuan014
  • chuan014
  • 2007年11月19日 22:04
  • 2578

CBitmap转换成GDI+的Bitmap (Image)

GDI与GDI+  图像对象的转化  (2011-09-23 09:18:58) 转载▼        GDI对象与设备描述表(DC)息息相关,设备描述表是Windows使用...
  • williamzhang1111
  • williamzhang1111
  • 2015年07月30日 13:58
  • 1861

Android appUI是如何显示到屏幕上的

Android应用程序开发时,UI界面的设计布局一般是通过编写layout.xml布局文件,Activity调用onCreate函数时利用setContentView(R.layout.activit...
  • linghaidong
  • linghaidong
  • 2017年10月19日 16:24
  • 88

Android Activity 各函数解析

Android 中Activity里面 onCreate, onDestory, onStart, onPause, onStop,onResume函数的作用...
  • fu_zk
  • fu_zk
  • 2013年09月11日 11:45
  • 2320

CBitmap

 类CBitmap封装了Windows图形设备接口(GDI)中的位图,并且提供了操纵位图的成员函数。使用CBitmap对象之前要先构造CBitmap对象,调用其中的一个初始化成员函数设置位图对象的句柄...
  • gxj1680
  • gxj1680
  • 2010年03月12日 11:06
  • 1480
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用CBitmap将图像快速显示到屏幕上
举报原因:
原因补充:

(最多只允许输入30个字)