简单易用的设备无关位图类CSimpleDib

       CSimpleDib();  // 缺省构造函数

       CSimpleDib(const CSimpleDib& src);  // 拷贝构造函数

       CSimpleDib(LPBYTE lpDibMem, LPBYTE lpBits = NULL); // 从内存区域创建对象,lpDibMem – 位图信息头,lpBits – 位图数据阵列头指针,如果lpBits0,则表示lpBits和头信息是连在一起的,就象一个位图文件。

       CSimpleDib& operator = (const LPBYTE lpDibMem); // lpDibMem – 同上

       CSimpleDib& operator = (const CSimpleDib& src);

       BOOL Create(int cx, int cy, int nBitCount = 24, bool bFillBlack = false); // bFillBlack TRUE则在创建后使用黑色填充

       void Clear(); // 清除DIB对象数据

       int Width(); // 取得位图宽度

       int Height(); // 取得位图高度

       int BitCount(); // 取得位图色彩位数

       int ImageSize(); // 图象数据阵列尺寸,不包括信息头

       int GetPitch(); // 每一行数据所占字节数

       LPBITMAPINFO GetBitmapInfo(); // 取得信息头指针

       const LPBYTE GetBits(); // 取得位图数据阵列头指针

       int HeaderSize(LPBITMAPINFO lpbi = NULL) ; // 取得信息头大小

       operator HPALETTE(); // 创建调色板,如果已经创建直接返回其句柄

       BOOL Load(LPCTSTR lpszPathName); // 从文件中加载 (bmp文件)

       BOOL Load(UINT nID, HMODULE hResModule = NULL); // 从资源中加载nID – 资源ID   hResModule – 模块句柄 0表示从进程EXE中加载

       BOOL Save(LPCTSTR lpszPathName); // 存储为bmp文件

       BOOL Blt(HDC hDC, int x, int y, int cx = -1, int cy = -1, int xSrc = 0, int ySrc = 0); // 将位图绘制到DC, x,yDC上的坐标, cx为宽度,cy为高度,xSrc,ySrc为从位图上的(xSrc,ySrc)坐标点开始。该函数不支持缩放

从这里下载源码及使用示例文件http://www.nhvideo.net/codes/SimpleDibDemo.rar


  由于Win32的StretchDIBits函数用于缩放有调色板的图象质量有严重问题(当然也可能是我水平的局限),因此封装了一个使用DrawDibDraw函数绘制位图的类CDibDraw,  

       BOOL CDibDraw::StretchBlt(HDC hDC, int x, int y, int cx, int cy, const CSimpleDib& dib, int xSrc = 0, int ySrc = 0, int cxSrc = -1, int cySrc = -1);
  具体用法请参考示例代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值