150上位机VC MFC使用GDI+贴图剪切镜像效果
150上位机VC MFC使用GDI+贴图剪切镜像效果
功能展示
GDI+ 是微软对窗口DGI的升级,对图片的操作十分方便,我们当前例程通过GDI+,实现在三维矩形上贴图,图片镜像,图片剪切等效果; 要点提示 通过微软的GDI+能够快速轻松实现 对图片各种操作; GDI+使用前,得下载微软的GDIPLUS支持包,可从微软的管网下载,我们这里给大家进行了打包; 然后是添加头文件再进行简单的初始化操作,在CWinApp派生类的InitInstance函数中进行此项工作是最好的;
实现功能 1.新建基于对话框的应用程序 2.使用前准备GDI+:将例程根目录Include文件夹复制到自己工程根目录。 在StdAfx.h头文件包含GDI+ 头文件及库文件//使用GDI+第一步 #define UNICODE #ifndef ULONG_PTR #define ULONG_PTR unsigned long* #endif #include "Include/gdiplus.h" using namespace Gdiplus; #pragma comment(lib, "Include/gdiplus.lib") 在APP类的InitInstance()中进行初始化 //使用GDI+第二步 GdiplusStartupInputgdiplusStartupInput; ULONG_PTR gdiplusToken; GdiplusStartup(&gdiplusToken,&gdiplusStartupInput, NULL); 在程序退出时 进行GDI+ 环境的关闭
//使用GDI+第三步 GdiplusShutdown(gdiplusToken); //关闭gdiplus的环境 3,准备好GDI+后,便是使用GDI+ 实现我们想要的功能:
准备三幅位图,放在res文件夹内,拖拽一位图控件,修改ID为IDC_RECT,拖拽一控件,关联函数,实现贴图效果 - void CGkbc8Dlg::OnButton1()
- {
- int WIDTH=200;
- int LEFT=100;
- int TOP=150;
- Graphics graphics(GetDC()->m_hDC);
-
- graphics.Clear(Color::Blue);//使用蓝色做背景色清屏
- //设置插值模式:高质量双三次插值法
- graphics.SetInterpolationMode(InterpolationModeHighQualityBicubic);
- //分别装入张贴在立方体三面的图片
- Bitmap face(L"res/1.bmp");
- Bitmap top(L"res/2.bmp");
- Bitmap right(L"res/3.bmp");
- //重新定义用于张贴在正面的图片坐标
- Point destinationFace[] =
- {
- Point(LEFT,TOP),
- Point(LEFT+WIDTH, TOP),
- Point(LEFT, TOP+WIDTH)
- };
- //张贴正面图像
- graphics.DrawImage(&face,destinationFace,3);
- //重新定义用于张贴在顶部的图片坐标
- PointF destinationTop[]=
- {
- PointF(LEFT+WIDTH/2, TOP-WIDTH/2),
- PointF(LEFT+WIDTH/2+WIDTH, TOP-WIDTH/2),
- PointF(LEFT, TOP)
- };
-
复制代码- //张贴顶部面图像
- graphics.DrawImage(&top, destinationTop, 3);
- //重新定义用于张贴在右侧的图片坐标
- Point destinationRight[]=
- {
- Point(LEFT+WIDTH, TOP),
- Point(LEFT+WIDTH/2+WIDTH, TOP-WIDTH/2),
- Point(LEFT+WIDTH,TOP+WIDTH)
- };
- //张贴右侧面图像
- graphics.DrawImage(&right, destinationRight, 3);
- }
复制代码其他功能代码过多,可下载例程进行学习
我们来演示实现的整个过程
|