1)基本代码展示  还是上一个那个总代码:

 #include<Windows.h>
#include<gdiplus.h>//GDI+的头文件
using namespace std;
using namespace Gdiplus;//GDI+的命名空间 #pragma comment(lib,"gdiplus.lib")//加载GDI+的库,去导入一个库 //这个叫 窗口消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_CLOSE://点那个×,窗口关闭
::PostQuitMessage();//消息推出
break;
case WM_PAINT:
HDC hdc=::GetDC(hWnd);//还是先取得这个窗口的句柄hdc
//==================定义图形对象,
//而且这个要和我的窗口关联,因为我要往我的窗口hdc中画 Graphics graphics(hdc);//传入那个hdc,就相当于关联了 //=================加载图片,就是那个png图片的对象
Image image(L"time.png");//L,把字符串转化成宽字符集 //==================加载完后 要进行贴图了
graphics.DrawImage(&image,,);//
::ReleaseDC(hWnd,hdc);//取得了 就得释放这个取得的hdc
break; }
return ::DefWindowProc( hWnd, uMsg, wParam, lParam);
} int CALLBACK WinMain(HINSTANCE hIstance,
HINSTANCE hPreInstance,
LPSTR pCmdLine,
int nCmdShow)
{ //============①要去调用一个开始去做GDI+操作的那一个函数============
ULONG_PTR uLong_ptr;
GdiplusStartupInput gdiplusStartupInput;
::GdiplusStartup(&uLong_ptr,&gdiplusStartupInput,NULL); HBRUSH hBrush=::CreateSolidBrush(RGB(,,)); //1.设计---->就是给WNDCLASSEX结构体初始化(结构体有12个)
WNDCLASSEX wndclass;
wndclass.cbClsExtra=;
wndclass.cbWndExtra=;//这两个是确定是否要分配额外的空间
wndclass.cbSize=sizeof(WNDCLASSEX);
wndclass.hbrBackground=hBrush;
wndclass.hCursor=NULL;//光标
//因为上面的那个LoadCUrsor是需要字符串,但是那个IDC_CURSOR1是一个整型数字,所以 需要用那个宏给转定义一下
wndclass.hIcon=NULL;//窗口图标
wndclass.hIconSm=NULL;//窗口左上的图标
wndclass.hInstance=hIstance;
wndclass.lpfnWndProc=WndProc;
wndclass.lpszClassName="wangchao";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW; //2.注册
if(::RegisterClassEx(&wndclass)==FALSE)
{
::MessageBox(NULL,"dhsakfljadsf","提示",MB_OK); return ;
}
//3.创建 HWND hWnd=::CreateWindow("wangchao","xiao_hua",WS_OVERLAPPEDWINDOW,,,,,NULL,NULL,hIstance,NULL); if(hWnd==NULL)
{
::MessageBox(NULL,"创建失败","提示",MB_OK);
return ;
}
//4.显式 ::ShowWindow(hWnd,SW_SHOW); //5.消息循环 MSG msg; while(::GetMessage(&msg,,,))
{
//第一步先翻译
::TranslateMessage(&msg);
//第二部分发
::DispatchMessageA(&msg); } ::DeleteObject(hBrush);
//================②游戏关闭 我要关闭GDI+
//这个的变量为啥是这个,看帮助文档来的
::GdiplusShutdown(uLong_ptr);
return ;
}

2)当前目录信息:
    

3)我还可以用一个bmp格式的图片,按照以前的步骤  我画一个bmp格式的图片:

    

4)结果展示:

    

5) 我还可以得到图片的大小信息:

      

6)所有代码展示:
    

#include<Windows.h>
#include<gdiplus.h>//GDI+的头文件
using namespace std;
using namespace Gdiplus;//GDI+的命名空间 #pragma comment(lib,"gdiplus.lib")//加载GDI+的库,去导入一个库 float nAngle=;
//这个叫 窗口消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_CLOSE://点那个×,窗口关闭
::PostQuitMessage();//消息推出
break;
case WM_PAINT: break;
case WM_TIMER:
{
HDC hdc=::GetDC(hWnd);//还是先取得这个窗口的句柄hdc
//==================定义图形对象,
//而且这个要和我的窗口关联,因为我要往我的窗口hdc中画 Graphics graphics(hdc);//传入那个hdc,就相当于关联了 //=================加载图片,就是那个png图片的对象
Image image(L"time.png");//L,把字符串转化成宽字符集
int nWidth=image.GetWidth();
int nHeight=image.GetHeight();
//设置旋转的中心点
graphics.TranslateTransform(float(image.GetWidth()/),float(image.GetHeight()/));//(以图片的中心点做为旋转点)
//旋转
graphics.RotateTransform(nAngle);//他需要一个角度,所以在主函数上面定义一个变量nAngle
//==================加载完后 要进行贴图了
graphics.DrawImage(&image,,);//
::ReleaseDC(hWnd,hdc);//取得了 就得释放这个取得的hdc
}
break;
case WM_CREATE:
::SetTimer(hWnd,,,NULL); }
return ::DefWindowProc( hWnd, uMsg, wParam, lParam);
} int CALLBACK WinMain(HINSTANCE hIstance,
HINSTANCE hPreInstance,
LPSTR pCmdLine,
int nCmdShow)
{ //============①要去调用一个开始去做GDI+操作的那一个函数============
ULONG_PTR uLong_ptr;
GdiplusStartupInput gdiplusStartupInput;
::GdiplusStartup(&uLong_ptr,&gdiplusStartupInput,NULL); HBRUSH hBrush=::CreateSolidBrush(RGB(,,)); //1.设计---->就是给WNDCLASSEX结构体初始化(结构体有12个)
WNDCLASSEX wndclass;
wndclass.cbClsExtra=;
wndclass.cbWndExtra=;//这两个是确定是否要分配额外的空间
wndclass.cbSize=sizeof(WNDCLASSEX);
wndclass.hbrBackground=hBrush;
wndclass.hCursor=NULL;//光标
//因为上面的那个LoadCUrsor是需要字符串,但是那个IDC_CURSOR1是一个整型数字,所以 需要用那个宏给转定义一下
wndclass.hIcon=NULL;//窗口图标
wndclass.hIconSm=NULL;//窗口左上的图标
wndclass.hInstance=hIstance;
wndclass.lpfnWndProc=WndProc;
wndclass.lpszClassName="wangchao";
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW; //2.注册
if(::RegisterClassEx(&wndclass)==FALSE)
{
::MessageBox(NULL,"dhsakfljadsf","提示",MB_OK); return ;
}
//3.创建 HWND hWnd=::CreateWindow("wangchao","xiao_hua",WS_OVERLAPPEDWINDOW,,,,,NULL,NULL,hIstance,NULL); if(hWnd==NULL)
{
::MessageBox(NULL,"创建失败","提示",MB_OK);
return ;
}
//4.显式 ::ShowWindow(hWnd,SW_SHOW); //5.消息循环 MSG msg; while(::GetMessage(&msg,,,))
{
//第一步先翻译
::TranslateMessage(&msg);
//第二部分发
::DispatchMessageA(&msg); } ::DeleteObject(hBrush);
//================②游戏关闭 我要关闭GDI+
//这个的变量为啥是这个,看帮助文档来的
::GdiplusShutdown(uLong_ptr);
return ;
}

7)结果展示:
    

      

15)png图片旋转贴图的更多相关文章

  1. js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

    html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...

  2. HTML5图片旋转

    HTML5图片旋转 首先我们使用Cococs2dx-Js-Lite版,来创建一个工程,我们所需要的开发环境如下: 1,webstrom 2,google chrome浏览器 3,cocos2dx-Js ...

  3. flex 图片旋转(解决公转和自转问题)

    在Flex中图片的旋转是既有公转和自转的.这样在图片旋转的时候就有一定小麻烦: 为了更好地说明问题,先引入两个概念:“自转”和“公转”.想象一下,地球在绕着太阳公转的同时,它自己也在自转.Flash应 ...

  4. iOS 图片旋转方法

    iOS 图片旋转方法 通过 CGImage 或 CIImage 旋转特定角度 UIImage可通过CGImage或CIImage初始化,初始化方法分别为init(cgImage: CGImage, s ...

  5. 基于Emgucv,C#的图片旋转方式

    /// <summary> /// 图片旋转 --百度 旋转仿射 /// </summary> /// <param name="modelImage" ...

  6. pygame 笔记-9 图片旋转及边界反弹

    h5或flash中,可以直接对矢量对象,比如line, rectange旋转,但是pygame中,仅支持对image旋转,本以为这个是很简单的事情,但是发现还是有很多小猫腻的,记录一下: 先看一个错误 ...

  7. jQuery 3D圆盘旋转焦点图 支持鼠标滚轮

    之前我们分享过很多炫酷实用的jQuery焦点图插件了,今天介绍的这款jQuery焦点图非常特别,所有图片围成一个圆圈,组成一个立体视觉的圆盘,并且可以旋转选择圆盘中的图片.另外,这款jQuery 3D ...

  8. 【图像处理】基于OpenCV底层实现的图片旋转

    image processing 系列 [图像处理]直方图匹配 [图像处理]高斯滤波.中值滤波.均值滤波 图片旋转,本质上是对旋转后的图片中每一个像素点计算在原图的位置.然后照搬过来就好. (多说一句 ...

  9. OPENGL 显示BMP图片+旋转

    VS2010/Windows 7/ 1. 需包含头文件 stdio.h, glaux.h, glut.h.需要对应的lib,并添加包含路径 2. 窗口显示用glut库的函数 3. bmp图片从本地读取 ...

随机推荐

  1. ActorFramework教程对比及规划

    牢骚太盛防肠断,风物长宜放眼量. 一.引子 昨天的文章,本来就是想写写ActorFramework的教程内容,结果写着写着偏了,变成了吐槽. 首先,声明一下,自己从未参加过任何LabVIEW培训班,也 ...

  2. JDK源码阅读-------自学笔记(一)(java.lang.Object重写toString源码)

    一.前景提要 Object类中定义有public String toString()方法,其返回值是 String 类型. 二.默认返回组成 类名+@+16进制的hashcode,当使用打印方法打印的 ...

  3. 三十四、在SAP的屏幕选择中,将英文替换成我们想要的文本内容

    一.我们在代码中定义了一个选择屏幕,但是对应的显示界面为英文 界面如下 二.我们选择[转到]-[文本元素] 三.默认的文本内容是问号和三个点 四.我们修改成我们需要的,并激活这个文本,如果不激活会丢失 ...

  4. vim 好用的插件

    1  切换文件   使用buffer   这里可以安装一个  minibufExplorer https://github.com/huanglongchao/minibufexpl.vim 2 在项 ...

  5. linux命令,个人的日记本

    查看所有服务 chkconfig --list service httpd status ps -aux | grep svn

  6. Pip,pywin32,whl文件下载网址,mayavi安装包,PyQt5安装,PyMuPDF安装等注意事项

    (1)pip安装的包不一定是用户想要的位置,此时可以用 -t 选项来指定位置. 例如目标位置是/usr/local/lib/python2.7/site-packages/ ,要安装xlrd 这个包 ...

  7. Java中的日期表示类

    一.概述 Java中的日期类设计的比较失败,刚开始使用Date来计算时间,后来大部分Date类的方法都过时了:想用Calendar类代替Date类,然而Calendar类也是不尽如人意.下面简单介绍下 ...

  8. Java基础之枚举

    Java基础之枚举 作为1.5才增加的特性,枚举的使用并不是很多. 枚举其实就是一个比较特殊的类,就如同注解其实也是个特殊的接口一样(注解反编译之后没有了@符号).枚举使用enum关键字声明,通过反编 ...

  9. 51nod 1103:N的倍数 抽屉原理

    1103 N的倍数 题目来源: Ural 1302 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 一个长度为N的数组A,从A中选出若干个数,使得这 ...

  10. EUI库 - 快速入口之项目配置

      egretProperties.json exmlRoot  指定exml文件存放根目录,该路径必须为相对路径,目录内只能有exml文件 themes    主题文件数组,配置所有主题文件路径,该 ...