1)之前在窗口中载入图片  一般都是bmp的  但是  我想从网上下一些图片,这些图片可能是png的

2)那么就有了下面的操作

3)png图片可以直接做成透明的。

4)首先是创建窗口的基本代码:

 #include<Windows.h>

 //这个叫  窗口消息处理函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_CLOSE://点那个×,窗口关闭
::PostQuitMessage();//消息推出
break; }
return ::DefWindowProc( hWnd, uMsg, wParam, lParam);
} int CALLBACK WinMain(HINSTANCE hIstance,
HINSTANCE hPreInstance,
LPSTR pCmdLine,
int nCmdShow)
{ 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);
}

5)然后添加一个新的头文件:

    

        

 #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){

6)下面的步骤是  :

        ①要去调用一个开始去做GDI+操作的那一个函数

              ::GdiplusStartup();               //开始

             这个函数不懂 直接按下F1去查帮助

      得到下面的回答  

 Status GdiplusStartup(
__out ULONG_PTR token *token,
__in const GdiplusStartupInput *input,
__out GdiplusStartupOutput *output
); 第一个是令牌 我也不知道是啥 但是他是__out这个类型 也就是返回值 所以 我要用一个 ULONG_PTR类型的东西 接着
第二个是输入的东西 那么 我就得赋值了
第三个 我也是得用一个变量接着 那么 我怎么写接着呢:
①定义一个变量ULONG_PTR ulToken,因为他是需要一个接着这个out值的指针,所以 我把ulToken的地址扔进去
②再定义一个变量 GdiplusStartupInput gdiplusStartupInput;
③最后一个不用接着的变量,直接是NULL就行

    ②关闭GDI+

        

     ::DeleteObject(hBrush);
//================②游戏关闭 我要关闭GDI+
//这个的变量为啥是这个,看帮助文档来的
::GdiplusShutdown(uLong_ptr);
return ;
}

7)总的代码展示:

  

 #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; }
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 ;
}

8)上面都是准备工作  下面才是真正的贴图了

    就是在重绘那里  WM_PAINT

9)部分代码:
    

 case WM_PAINT:
HDC hdc=::GetDC(hWnd);//还是先取得这个窗口的句柄hdc
//==================定义图形对象,
//而且这个要和我的窗口关联,因为我要往我的窗口hdc中画 Graphics graphics(hdc);//传入那个hdc,就相当于关联了
//=================加载图片,就是那个png图片的对象
Image image("time.png"); ::ReleaseDC(hWnd,hdc);//取得了 就得释放这个取得的hdc
break;

那个time.png图片添加步骤

      ①在网上下载图片

      ②然后贴到下面:

            

            

      然后:

        

               

     但是代码报错了:

          

    我做了修改  就好了(至于为啥要那样改  我还没弄明白  就知道那样改就对)

          

    

 case WM_PAINT:
HDC hdc=::GetDC(hWnd);//还是先取得这个窗口的句柄hdc
//==================定义图形对象,
//而且这个要和我的窗口关联,因为我要往我的窗口hdc中画 Graphics graphics(hdc);//传入那个hdc,就相当于关联了
//=================加载图片,就是那个png图片的对象
Image image(L"time.png"); ::ReleaseDC(hWnd,hdc);//取得了 就得释放这个取得的hdc
break;

10)结果展示:
  

      

11)总目录结果展示:

      

12)总代码展示:

 #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 ;
}

14)载入png图片的更多相关文章

  1. Unity3d载入外部图片文件

    unity里的图片在生成时会压缩成资源文件,有时客户想自己放一些图片用unity显示,就必须载入外部图片. 大体思路:用Application.streamingAssetsPath或Applicat ...

  2. UWP应用载入SVG图片的兼容性方案

    原文 UWP应用载入SVG图片的兼容性方案 新版本<纸书科学计算器>的更新点之一,就是优化了表达式的显示方式.在旧版本中,表达式里的符号是用png图片显示的,当用户放大看的时候会发现一些锯 ...

  3. ios启动载入启动图片

    版本判断: 1.首先你要知道这个键值对的key:id key =   (id)kCFBundleVersionKey; 2.同过本地的NSBundle取得当前的版本号. 3.在沙盒中取得对应的版本号. ...

  4. 14种网页图片和文字特效的jQuery插件代码

    1.网页图片3d旋转jQuery代码 演示和下载地址 2.存css3实现的tabl选项卡代码 演示和下载地址 3.jQuery标签旋转代码 演示和下载地址 4.鼠标悬浮的图片选项卡代码 演示和下载地址 ...

  5. StaggeredGridView+universal-image-loader载入网路图片实现瀑布流

    StaggeredGridView 开源lib  https://github.com/maurycyw/StaggeredGridView 文章demo下载地址  http://download.c ...

  6. Eclipse rap 富客户端开发总结(14) :rap 图片、数据缓存处理

    一.概述 在进行了 rap 的基本学习之后,您对 rap 的理解是否进入了更高的一个层次呢,个人觉得,对学习 rap 的人来说,进行 rap 的学习是一个探索的过程,在编程中不断的对其进行理解和分析, ...

  7. MFC载入JPG图片

    ## 1.定义画图函数 HRESULT CIPCamDlg::draw(char *lpImageFile, HWND hWnd, int nScrWidth, int nScrHeight) { H ...

  8. 14.移动端图片浏览组件 react-wx-images-viewer

    安装 npm install --save react-wx-images-viewer 使用 import WxImageViewer from 'react-wx-images-viewer'; ...

  9. 在html页面中利用ftp访问协议格式载入服务器图片

    访问格式为:ftp://用户名:密码@服务器ip:服务器端口/具体文件路径 如下所示: <img src="ftp://lxj:123@127.0.0.1:21/IMG_2013051 ...

随机推荐

  1. Essay写作观点的打造

    很多留学生在Essay写作过程中经常出现的问题就是缺乏对于已有知识的新的理解,只是单纯在做文献综述(literature review)而已.要怎么样才能够体现自己的理解和自己的观点,便是今天我们讲解 ...

  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-print

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  3. 【LeetCode】最长公共子序列

    [问题]给定两个字符串A和B,长度分别为m和n,要求找出它们最长的公共子串,并返回其长度.例如:A = "HelloWorld"B = "loop"则A与B的最 ...

  4. PHP的变量作用域-常亮-全局变量-表单提交变量

    一.变量的作用域 作用域是指在一个脚本中某个变量在哪些地方可以使用或可见. 内置超级全局变量可以在脚本的任何地方使用和可见. 常量,一旦被声明,将可以在全局可见.也就是说,他们可以在函数内外使用. 在 ...

  5. BZOJ:1878: [SDOI2009]HH的项链

    题解:解法一:莫队 解法二:按区间左端点排序,让区间内最左边的贝壳对答案产生贡献,树状数组维护,转移对答案产生贡献的贝壳位置 #include<iostream> #include< ...

  6. [转自官方文档] Django——render()

    每个视图都需要做2件事,返回一个包含被请求页面内容的HttpResponse对象或者一个404 快捷函数  render( 请求, 模板, 内容) 载入模板,填充上下文,再返回它生成的HttpResp ...

  7. UVALive 3634 数据结构模拟

    这题真是坑啊,题意不明,其实就是往桟里面压入空的set集合,所以之前的询问大小都是只有0,只有add的时候,才会产生新的占空间的集合 用stack和set直接进行模拟 #include <ios ...

  8. Essay写作用对标点符号很重要!

    很多留学生在essay写作中对于标点符号的正确使用可能不是太清楚,今天Meeloun小编给大家整理了一些关于标点符号的正确打开方式,希望可以帮到同学们! Colloquialism俗语: 如果要在写作 ...

  9. 干货|浅谈iOS端短视频SDK技术实现

    短视频SDK主要包含"视频录制"和"视频编辑"这两个核心功能. 视频录制包括:视频采集.美颜.滤镜.摄像头切换.视音频采集参数设置等功能: 视频编辑包括:视频导 ...

  10. BUUCTF-WEB-easy_tornado

    知识点: Python Web 框架:Tornado python中的一个渲染函数:render: 渲染变量到模板中,即可以通过传递不同的参数形成不同的页面. 1. render方法的实质就是生成te ...