绘制一个位图(Bitmap)对象
来源:互联网 发布:java xlsx 编辑:程序博客网 时间:2024/05/22 08:35
绘制一个位图(Bitmap)对象
GDI的所有操作都是在DC(device context)上进行的,所以首先你应该有DC的概念,如果你对DC还不了解,现在就去翻一翻Windows编程的书吧。
首先我们要Load一个Bitmap对象,使用Win32 API可以写成这样:
//从资源Load一个位图,如果从文件load的话,可以使用::LoadImage()
HBITMAP hbmp=::LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_MYBMP));
如果使用MFC可以这样写:
CBitmap bmp;
Bmp.LoadBitmap(IDB_MYBMP);
想把这个位图对象绘制到窗口上就要先得到窗口的DC,然后对这个DC操作。请留意创建MemoryDC的代码,后面会用到。
Win32 API的版本:
//假设位图大小为100*100像素
//假设hwnd是要绘制的窗口的HANDLE
HDC hwnddc=::GetDC(hwnd);
HDC memdc=::CreateCompatibleDC(hwnddc);
HBITMAP oldbmp=::SelectObject(memdc,hbmp);
::BitBlt(hwnddc,0,0,100,100,memdc,0,0,SRCCOPY);
if(oldbmp)
::SelectObject(memdc,oldbmp);
DeleteDC(memdc);
::ReleaseDC(hwnd,hwnddc);
MFC版本:
//假设是在一个CWnd派生类的成员函数中
CClientDC dc(this);
CDC memdc;
memdc.CreateCompatibleDC(&dc);
CBitmap *oldbmp=memdc.SelectObject(&bmp);
dc.BitBlt(0,0,100,100,&memdc,0,0,SRCCOPY);
if(oldbmp)
memdc.SelectObject(oldbmp);
也可以这样:
CClientDC dc(this);
dc.DrawState(CPoint(0,0),CSize(100,100),&bmp,DST_BITMAP);
基本的代码就是这样,当然有更多的API可以用,这就要看你自己的了。J
- 绘制一个位图(Bitmap)对象
- bitmap绘制位图
- 绘画---仿照一个Bitmap绘制一个新的Bitmap对象
- 在位图上(Bitmap)绘制位图(Bitmap)
- 记一个 bitmap位图压缩。
- ios 基本图形的绘制 基于bitmap 位图
- iOS 基本图形的绘制 基于bitmap 位图
- 得到一个BitMap对象
- 位图(bitmap)
- Bitmap(位图)
- 位图Bitmap
- 《位图 - Bitmap》
- 位图 bitmap
- BitMap位图
- BitMap(位图)
- BitMap--位图
- 位图Bitmap
- 位图 BitMap
- oracle-12514 or 12520 监听程序无法为请求的服务器类型找到可用的处理程序
- grep
- live555--消息循环
- vc工程配置积累
- Post和Get方式提交数据
- 绘制一个位图(Bitmap)对象
- 关于BSS段的大小问题
- 一个计算机爱好者的不完整回忆(四十三)20天从零开始到应用上线
- 放生
- RTP/RTSP/RTCP的区别
- KHook
- 面向对象:类的存与亡
- ARP病毒查找与防范
- linux内核分析笔记----系统调用