正在阅读:vc实现BMP位图文件结构及平滑缩放vc实现BMP位图文件结构及平滑缩放

2005-06-22 10:14 出处: 作者:unknown 责任编辑:moningfeng
二、BMP位图一般显示方法   1. 申请内存空间用于存放位图文件   GlobalAlloc(GHND,FileLength);   2. 位图文件读入所申请内存空间中   LoadFileToMemory( mpBitsSrc,mFileName);   3. 在OnPaint等函数中用创建显示用位图   用CreateDIBitmap()创建显示用位图,用CreateCompatibleDC()创建兼容DC,   用SelectBitmap()选择显示位图。   4. 用BitBlt或StretchBlt等函数显示位图   5. 用DeleteObject()删除所创建的位图   以上方法的缺点是: 1)显示速度慢; 2) 内存占用大; 3) 位图在缩小显示时图形失真大,(可通过安装字体平滑软件来解决); 4) 在低颜色位数的设备上(如256显示模式)显示高颜色位数的图形(如真彩色)图形失真严重。 三、BMP位图缩放显示   用DrawDib视频函数来显示位图,内存占用少,速度快,而且还可以对图形进行淡化(Dithering)处理。淡化处理是一种图形算法,可以用来在一个支持比图像所用颜色要少的设备上显示彩色图像。BMP位图显示方法如下:   1. 打开视频函数DrawDibOpen(),一般放在在构造函数中   2. 申请内存空间用于存放位图文件

GlobalAlloc(GHND,FileLength);

  3. 位图文件读入所申请内存空间中

LoadFileToMemory( mpBitsSrc,mFileName);

  4. 在OnPaint等函数中用DrawDibRealize(),DrawDibDraw()显示位图   5. 关闭视频函数DrawDibClose(),一般放在在析构函数中   以上方法的优点是: 1)显示速度快; 2) 内存占用少; 3) 缩放显示时图形失真小,4) 在低颜色位数的设备上显示高颜色位数的图形图形时失真小; 5) 通过直接处理位图数据,可以制作简单动画。 四、CViewBimap类编程要点   1. 在CViewBimap类中添加视频函数等成员

HDRAWDIB m_hDrawDib; // 视频函数 HANDLEmhBitsSrc; // 位图文件句柄(内存) LPSTR mpBitsSrc; // 位图文件地址(内存) BITMAPINFOHEADER *mpBitmapInfo; // 位图信息头

  2. 在CViewBimap类构造函数中添加打开视频函数

  m_hDrawDib= DrawDibOpen();

  3. 在CViewBimap类析构函数中添加关闭视频函数

if( m_hDrawDib != NULL) { DrawDibClose( m_hDrawDib); m_hDrawDib = NULL; }

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品