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图片从本地读取 ...
随机推荐
- [JZOJ]1293.气象牛[区间DP]
Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并按顺序记录了结果M_1-M_N(1 <= M_i <= 1 ...
- .NET via C#笔记5——基元类型,引用类型和值类型
5 基元类型,引用类型和值类型 5.3 值类型的装箱和拆箱 将值类型转化为引用类型需要进行装箱(boxing) 赋值,传参等操作,如果从值类型转为引用类型,都会进行装箱 装箱的代价比较大 申请一块堆内 ...
- bash 内嵌命令 printf 用于进制转换
printf - 格式化并显示数据 printf "%d" 0x10 printf "%x" 16
- JAXB工具
在JDK6之后,都自带了JAXB工具,所以在jdk类库与tomcat WEBAPP类库之间,会造成冲突 https://blog.csdn.net/iteye_13776/article/detail ...
- oracle查询语句注意事项:
我想查出datatype 不等于1的所有结果,包括空. '; //这条sql查不出datatype为空的数据 发现oracle需要使用 is null .is not null查询空或非空 ' ...
- cf 730J. Bottles
搞一个背包,233 要求用的瓶数最少,那么就业瓶数为第一关键,当瓶数相当后再以a[i] #include<bits/stdc++.h> #define N 100005 #define L ...
- 在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4
上次在网上找了一个在阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4的文档,可能是这个文档不是最新版的,安装的时候遇到了很多问题, 最后跟一个大神要了一 ...
- ArchLinux安装(UEFI)
ArchLinux安装(UEFI) 一.连接网络 1.连接 # wifi-menu 2.检查是否联通 (ctrl+c停止) # ping www.baidu.com 3.远程安装 注:连接上网络之后可 ...
- [CISCN2019 总决赛 Day2 Web1]Easyweb
0x00 知识点 1:备份文件泄露 2:SQL注入 3:php短标签 短标签<? ?>需要php.ini开启short_open_tag = On,但<?= ?>不受该条控制. ...
- GBDT入门
GBDT(MART)迭代决策树入门教程 GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree) ...