15)png图片旋转贴图
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图片旋转贴图的更多相关文章
- js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能
html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...
- HTML5图片旋转
HTML5图片旋转 首先我们使用Cococs2dx-Js-Lite版,来创建一个工程,我们所需要的开发环境如下: 1,webstrom 2,google chrome浏览器 3,cocos2dx-Js ...
- flex 图片旋转(解决公转和自转问题)
在Flex中图片的旋转是既有公转和自转的.这样在图片旋转的时候就有一定小麻烦: 为了更好地说明问题,先引入两个概念:“自转”和“公转”.想象一下,地球在绕着太阳公转的同时,它自己也在自转.Flash应 ...
- iOS 图片旋转方法
iOS 图片旋转方法 通过 CGImage 或 CIImage 旋转特定角度 UIImage可通过CGImage或CIImage初始化,初始化方法分别为init(cgImage: CGImage, s ...
- 基于Emgucv,C#的图片旋转方式
/// <summary> /// 图片旋转 --百度 旋转仿射 /// </summary> /// <param name="modelImage" ...
- pygame 笔记-9 图片旋转及边界反弹
h5或flash中,可以直接对矢量对象,比如line, rectange旋转,但是pygame中,仅支持对image旋转,本以为这个是很简单的事情,但是发现还是有很多小猫腻的,记录一下: 先看一个错误 ...
- jQuery 3D圆盘旋转焦点图 支持鼠标滚轮
之前我们分享过很多炫酷实用的jQuery焦点图插件了,今天介绍的这款jQuery焦点图非常特别,所有图片围成一个圆圈,组成一个立体视觉的圆盘,并且可以旋转选择圆盘中的图片.另外,这款jQuery 3D ...
- 【图像处理】基于OpenCV底层实现的图片旋转
image processing 系列 [图像处理]直方图匹配 [图像处理]高斯滤波.中值滤波.均值滤波 图片旋转,本质上是对旋转后的图片中每一个像素点计算在原图的位置.然后照搬过来就好. (多说一句 ...
- OPENGL 显示BMP图片+旋转
VS2010/Windows 7/ 1. 需包含头文件 stdio.h, glaux.h, glut.h.需要对应的lib,并添加包含路径 2. 窗口显示用glut库的函数 3. bmp图片从本地读取 ...
随机推荐
- Java笔记: protected的真正含义
关于protected关键字,即使是Java初学者也能够说出它的含义:protected修饰的成员可以被子类访问.但是这样理解并不完全准确,下面考虑它的真正含义. Java访问控制回顾 Java语言定 ...
- 最小编辑距离python
1 什么是编辑距离在计算文本的相似性时,经常会用到编辑距离(Levenshtein距离),其指两个字符串之间,由一个字符串转成另一个所需的最少编辑操作次数.在字符串形式上来说,编辑距离越小,那么两个文 ...
- Python MySQL Delete
章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...
- Bulma CSS - 开始
Bulma CSS框架教程 Bulma CSS – 简介 Bulma CSS – 开始 Bulma CSS – CSS类 Bulma CSS – 模块化 Bulma CSS – 响应式 有数种方法可以 ...
- Sublime 一些常用快捷键
Sublime插件安装和使用-----------------------------最常用的1.新建文件-输入"html:xt"后 按"Ctrl+E键"或 & ...
- IntelliJ IDEA中,mybatis的配置文件(map.xml)无法编译到class文件夹下
编译工具:IntelliJ IDEA 项目结构:maven 项目框架:SSM 问题:java目录下,mybatis的配置文件(map.xml)无法编译到class文件夹下 问题原因:在idea中,直接 ...
- CodeForces - 402B Trees in a Row (暴力)
题意:给定n个数,要求修改其中最少的数,使得这n个数满足ai + 1 - ai = k. 分析: 暴力,1000*1000. 1.这n个数,就是一个首项为a1,公差为k的等差数列.k已知,如果确定了a ...
- Day3-T4
原题目 Describe:有点恶心的DP+最短路 code: #include<bits/stdc++.h> using namespace std; long long A,B,C,z, ...
- Day3-T1
原题目 Describe:暴力出奇迹 [ 注意步长0.5!] code: #include<bits/stdc++.h> using namespace std; inline int r ...
- PHP的变量作用域-常亮-全局变量-表单提交变量
一.变量的作用域 作用域是指在一个脚本中某个变量在哪些地方可以使用或可见. 内置超级全局变量可以在脚本的任何地方使用和可见. 常量,一旦被声明,将可以在全局可见.也就是说,他们可以在函数内外使用. 在 ...