改变bitmap大小的函数
2009-07-08 16:49
323 查看
BOOL TranslateBitmapSize( IN HDC hCurScreemDC, //当前屏幕DC,可通过GetDC获得 IN HBITMAP hBmpSrc, //原BITMAP句柄 IN int nSrcWidth, //原BITMAP的宽度 IN int nSrcHeight, //原BITMAP的高度 OUT HBITMAP &hBmpDst, //改变大小后的BITMAP的句柄 IN int nDstWidth, //改变大小后的BITMAP的宽度 IN int nDstHeight //改变大小后的BITMAP的高度 ) { if (hBmpSrc == NULL || hCurScreemDC == NULL) { return FALSE; } if (hBmpDst != NULL) { DeleteObject(hBmpDst); } HDC hOldSrcDC = NULL; HDC hOldDstDC = NULL; HDC hSrcDC = CreateCompatibleDC(hCurScreemDC); HDC hDstDC = CreateCompatibleDC(hCurScreemDC); hBmpDst = CreateCompatibleBitmap(hCurScreemDC,nDstWidth,nDstHeight); hOldSrcDC = (HDC)SelectObject(hSrcDC,hBmpSrc); hOldDstDC = (HDC)SelectObject(hDstDC,hBmpDst); StretchBlt(hDstDC,0,0,nDstWidth,nDstHeight,hSrcDC,0,0,nSrcWidth,nSrcHeight,SRCCOPY); SelectObject(hSrcDC,hOldSrcDC); SelectObject(hDstDC,hOldDstDC); DeleteObject(hSrcDC); DeleteObject(hDstDC); return TRUE; }
原理:
创建两个与当前屏幕DC兼容的DC,创建一个与当前屏幕兼容的位图句柄,把两个位图句柄分别选入两个兼容DC,然后通过StretchBlt函数进行DC拷贝,目的位图句柄就获得了改变后的位图。
相关文章推荐
- 用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置
- 改变材质另一种方法《三》 主要通过drawBitmap函数跟新贴图movie
- 通过bitmap改变图片的大小
- Android使用Palette把drawable转为bitmap图像大小改变的问题
- OpenCV学习笔记:resize函数改变图像的大小
- 拖拽的基本函数(已有限制范围和修复浏览器默认行为以及磁性吸附、碰撞检测、改变层大小、模拟滚动条)
- C++标准泛型算法库的函数为什么设计成不能改变容器大小?
- 练习:试编写一个函数ChangeSize2D 来改变一个二维数组的大小
- Android 改变ImageView图片的Bitmap大小
- OpenCV resize函数改变图像的大小
- 一个可以根据设定输出图片的函数 可以改变图片的大小
- imresize函数改变图像大小,插值
- 当窗体改变大小时控件大小随之改变(使用函数)
- 显示Bitmap并让适应屏幕改变大小显示
- 改变bitmap背景颜色函数
- 用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置
- Bitmap——在不改变大小的情况下,如何以最省内存的方式读取本地资源的图片
- 控件函数对话框上的控件的大小和位置随着对话框的大小的改变而变化
- Bitmap大小改变
- 通过bitmap改变图片的大小