[ATL/WTL]_[初级]_[CBitmap复制图片-截取图片-平铺图片]
来源:互联网 发布:js toupcase 编辑:程序博客网 时间:2024/05/17 21:59
场景:
1.当你需要截取图片部分区域作为某个控件的背景。
2.需要平铺图片到一个大区域让他自动放大时。
3.或者需要合并图片时。
代码:
CDC sdc; CDC ddc;sdc.CreateCompatibleDC(NULL);ddc.CreateCompatibleDC(NULL);CBitmap destBmp;destBmp.CreateCompatibleBitmap(CClientDC(NULL),width,height);sdc.SelectBitmap(m_Bitmap);ddc.SelectBitmap(destBmp);ddc.BitBlt(0, 0, width, height, sdc, rect.left, rect.top, SRCCOPY );
注意: 这里有一点要注意的,就是destBmp在调用CreateCompatibleBitmap时,传递进去的第一个参数是CClientDC,不然生成的新的CBitmap会不是你想要的.
下边给出的是MFC api复制HBITMAP 对象,部分代码来自网上.
复制HBITMAP对象.
static HBITMAP CopyBitmap(HBITMAP hSourceHbitmap,long width,long height,int srcx,int srcy){CDC sourceDC;CDC destDC;sourceDC.CreateCompatibleDC(NULL);destDC.CreateCompatibleDC(NULL);//The bitmap information.BITMAP bm = {0};//Get the bitmap information.::GetObject(hSourceHbitmap, sizeof(bm), &bm);// Create a bitmap to hold the resultHBITMAP hbmResult = ::CreateCompatibleBitmap(CClientDC(NULL), width, height);HBITMAP hbmOldSource = (HBITMAP)::SelectObject( sourceDC.m_hDC, hSourceHbitmap);HBITMAP hbmOldDest = (HBITMAP)::SelectObject( destDC.m_hDC, hbmResult );destDC.BitBlt(0,0,width, height, sourceDC, srcx, srcy, SRCCOPY );// Restore DCs::SelectObject( sourceDC.m_hDC, hbmOldSource );::SelectObject( destDC.m_hDC, hbmOldDest );::DeleteObject(sourceDC.m_hDC);::DeleteObject(destDC.m_hDC);return hbmResult;}
0 0
- [ATL/WTL]_[初级]_[CBitmap复制图片-截取图片-平铺图片]
- [ATL/WTL]_[初级]_[环境搭建]
- [ATL/WTL]_[中级]_[使用GDIPlus剪切和缩放图片]
- java开发_图片截取
- [ATL/WTL]_[初级]_[SDI程序关闭的注意事项]
- [ATL/WTL]_[初级]_[常用的界面对象操作]
- [ATL/WTL]_[初级]_[拖放文件到窗口]
- [ATL/WTL]_[初级]_[Windows消息循环初解]
- [ATL/WTL]_[初级]_[选择目录对话框]
- [wxWidgets]_[中级]_[合并图片-平铺图片-使用小图绘制大图]
- [ATL/WTL]_[中级]_[保存CBitmap到文件-保存屏幕内容到文件]
- 图片平铺
- 平铺图片
- [Cocoa]_[初级]_[自定义的界面上绘制图片]
- [Cocoa]_[初级]_[在一张图片上添加图片水印和文字水印]
- android图片_旋转图片
- android图片_缩放图片
- [ATL/WTL]_[初级]_[转发消息让CStatic支持点击消息操作]
- asp.net页面事件执行顺序
- jquery的$.extend和$.fn.extend作用及区别
- LeetCode之旅(32)
- Makefile 编译问题解惑
- 在两台Linux机器之间配置一条SLIP链路
- [ATL/WTL]_[初级]_[CBitmap复制图片-截取图片-平铺图片]
- tomcat持久化会话到oracl数据库
- 使用代码创建UITableViewCell
- 兼容性——IE6 IE7 IE8(Q) 负边距 (margin) 导致元素溢出 hasLayout 容器时显示异常
- c#的DateTime.Now函数详解
- HA集群中的虚拟IP原理
- Codeforces 101B Buses 排序+树状数组
- golang指针与C指针的异同
- 模糊查询