博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
win32之bitmap篇
阅读量:7071 次
发布时间:2019-06-28

本文共 1095 字,大约阅读时间需要 3 分钟。

 先讲一下LoadBitmap的用法,代码如下:

PAINTSTRUCT ps;    HDC hdc = BeginPaint(hwnd,&ps);    HDC hMemDC = CreateCompatibleDC(hdc);    HBITMAP hBitmap = LoadBitmap(g_hIntance,MAKEINTRESOURCE(IDB_BITMAP1));    HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC,hBitmap);        //把HBITMAP转换成BITMAP,从而获取位图的宽高。    BITMAP bmp;    GetObject(hBitmap, sizeof(BITMAP), &bmp);    BitBlt(hdc,0,0,bmp.bmWidth,bmp.bmHeight,hMemDC,0,0,SRCCOPY);    SelectObject(hMemDC,hOldBitmap);    DeleteObject(hBitmap);    DeleteDC(hMemDC);    EndPaint(hwnd,&ps);

BitBlt的作用是把hMemDC上的内容拷贝到hdc上,不进行缩放,但是可以位移。

如果想要缩放,可以使用StretchBlt,以下这个例子比较有趣,是把整个屏幕绘制到窗口中。

PAINTSTRUCT ps;    HDC hdcClient = BeginPaint(hwnd, &ps);      HDC hdcScreen = CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL);      RECT rtClient;    int scrWidth = GetSystemMetrics(SM_CXSCREEN);    int scrHeight = GetSystemMetrics(SM_CYSCREEN);    GetClientRect(hwnd,&rtClient);    StretchBlt(hdcClient,0,0,rtClient.right,rtClient.bottom,        hdcScreen,0,0,scrWidth,scrHeight,SRCCOPY);    DeleteDC(hdcScreen);      EndPaint(hwnd, &ps);

 

转载于:https://www.cnblogs.com/jlyg/p/8444843.html

你可能感兴趣的文章
Flume+Kafka+SparkStreaming+Hbase+可视化(二)
查看>>
C语言中的结构体
查看>>
文本框只能输入数字
查看>>
netty实现TCP长连接
查看>>
[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2
查看>>
在Mysql中怎样返回一个数据库的所有表名,列名数据类型备注
查看>>
[转载] 信息系统项目管理师视频教程——12 项目整体管理
查看>>
XAML实例教程系列 - 类型转换器(Type Converter)
查看>>
LeetCode 50. Pow(x, n)
查看>>
Action的创建和配置
查看>>
checkAll全选的一个小例子
查看>>
【转】centos关机与重启命令详解
查看>>
17.元素分类
查看>>
C语言-堆和栈
查看>>
Spring 源码解析(六)创建bean实例
查看>>
ios-xml和json的解析
查看>>
Http报头Accept与Content-Type的区别
查看>>
分析Linux内核创建一个新进程的过程【转】
查看>>
快速排序(QuickSort)
查看>>
Java8之使用Optional进行Null处理
查看>>