SetDIBitsToDevice函数

来源:互联网 发布:微贷网高收益网络理财 编辑:程序博客网 时间:2024/05/23 19:21
View ColorizedCopy to Clipboardint SetDIBitsToDevice(  HDC hdc,    int XDest,  int YDest,  DWORD dwWidth,  DWORD dwHeight,  int XSrc,  int YSrc,  UINT uStartScan,  UINT cScanLines,  CONST VOID* lpvBits,  CONST BITMAPINFO* lpbmi,  UINT fuColorUse);

这是该函数的声明,用与显示DDB(设备无关位图),比如要将某一位图完整的显示在客户区,可以这么做:

SetDIBitsToDevice(hdc,                0,         //客户区开始显示位图的x坐标,窗口默认映射方                //式为WM_TEXT,即左上角为原点                0,         //客户区开始显示位图的y坐标                cxDib,     // 要显示的位图的宽度(cxDib是位图的宽度                cyDib,     //要显示的位图的高度(cyDib是位图的高度                0,         // 位图中原点位于位图左下角                0,         //                  0,         //开始扫描线的位置                             cyDib,     //扫描线的数目                pBits,                pbmi,                DIB_RGB_COLORS);

先看一下是不是整个位图都显示了
这里写图片描述
如果只是要显示一部分到客户区左上角呢?
这里写图片描述

那么将对应的dwWidth, dwHeight改为该部分位图的大小(这里就是cxDib/4,cyDib/5),而XSrc, YSrc该怎么改呢?实际位图中是以左下角开始的,所以图中绿色矩形的左下角就是SXrc,YSrc坐标,这里就是cxDib/2,3*cyDib/5
这里写图片描述
我也试过改变 uStartScan // first scan line
和cScanLines // number of scan lines
不过没必要了,简单的显示位图或者一部分用上面的方法就可以了,而且书上说的比较麻烦

0 0
原创粉丝点击