新建一个mfc项目,在res文件夹下放一张24位色的bmp图像文件。
在CMyDlg/OnPaint()函数中写入如下代码:
void CMyDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CBitmap bmp;
bmp.LoadBitmap(IDB_EAR); // 导入bitmap
BITMAP bm;
bmp.GetBitmap(&bm); // 保存到BITMAP对象中
CDC mdc;
mdc.CreateCompatibleDC(&dc);// 带入一个DC模板
mdc.SelectObject(&bmp);// 装载BITMAP
// 第一二个参数指定了 贴图显示位置的起点 左上角位置
// 第三四个参数指定了 贴图显示的大小
// 第五 个参数指定了 贴图显示的目标dc
// 第六七个参数指定了 贴图显示原图的起点 即从原图的哪个位置开始显示
// 第八 个参数指定了 贴图的方式
// dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &mdc, 10, 100, SRCCOPY); // 贴图
// 压缩或拉伸原始图片函数 这里用做翻转
// 前五个参数同上
// 第六七个参数指定了 贴图显示原图的起点
// 第八九个参数指定了 原图的大小
dc.StretchBlt(0,0,bm.bmWidth,bm.bmHeight, &mdc, bm.bmWidth, 0, -bm.bmWidth, bm.bmHeight, SRCCOPY);
}
即可在dc中显示贴图,翻转贴图。
等后续更新为 提取内存dc中的内容保存成图像文件。