鱼C论坛

 找回密码
 立即注册
查看: 4632|回复: 1

如何用loadimage这个函数加载一张图片?各位大神有没有参照的代码,麻烦发一下呗,...

[复制链接]
发表于 2018-4-2 10:30:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
越简单越好哟,好人一生平安
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-8-4 16:48:06 | 显示全部楼层

  1. #include <windows.h>

  2. //函数声明
  3. LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);//窗口处理函数
  4. void init();//初始化设备环境
  5. void Render();//渲染函数
  6. void CleanUp();//释放设备环境

  7. //变量定义
  8. HWND hwnd;
  9. HDC hdc,hdcmen;
  10. BITMAP bm;
  11. HBITMAP hbm;


  12. //主函数
  13. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
  14. {
  15.         //设计窗口类
  16.         WNDCLASS wndclass = {
  17.                 CS_HREDRAW | CS_VREDRAW,
  18.                 WndProc,
  19.                 0,
  20.                 0,
  21.                 hInstance,
  22.                 LoadIcon(NULL, IDI_APPLICATION),
  23.                 LoadCursor(NULL, IDC_ARROW),
  24.                 (HBRUSH)GetStockObject(WHITE_BRUSH),
  25.                 NULL,
  26.                 TEXT("MYDEMO")
  27.         };
  28.         //注册窗口类
  29.         RegisterClass(&wndclass);
  30.         //创建窗口类
  31.         hwnd = CreateWindow(
  32.                 TEXT("MYDEMO"),
  33.                 TEXT("MyDemo"),
  34.                 WS_OVERLAPPEDWINDOW,
  35.                 CW_USEDEFAULT,
  36.                 CW_USEDEFAULT,
  37.                 CW_USEDEFAULT,
  38.                 CW_USEDEFAULT,
  39.                 NULL,
  40.                 NULL,
  41.                 hInstance,
  42.                 NULL);
  43.         //显示窗口
  44.         ShowWindow(hwnd, nCmdShow);
  45.         //更新窗口
  46.         UpdateWindow(hwnd);

  47.         //初始化
  48.         init();

  49.         //消息循环
  50.         MSG Msg;
  51.         BOOL bRet;
  52.         PeekMessage(&Msg, NULL, 0, 0, PM_NOREMOVE);
  53.         while (Msg.message != WM_QUIT)
  54.         {
  55.                 bRet = PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE);
  56.                 if (bRet)
  57.                 {
  58.                         TranslateMessage(&Msg);
  59.                         DispatchMessage(&Msg);
  60.                 }
  61.                 Render();
  62.         }
  63.         CleanUp();

  64.         return Msg.wParam;
  65. }


  66. //窗口过程处理函数
  67. LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  68. {
  69.         switch (message)
  70.         {
  71.         case WM_DESTROY:
  72.                 PostQuitMessage(0);
  73.                 return 0;
  74.         }

  75.         return DefWindowProc(hwnd, message, wParam, lParam);
  76. }
  77. //初始化函数
  78. void init()
  79. {
  80.         if (!hwnd)
  81.         {
  82.                 return;
  83.         }
  84.         //设备环境获取
  85.         hdc = GetDC(hwnd);
  86.         //获取兼容设备环境
  87.         hdcmen = CreateCompatibleDC(hdc);
  88.         //加载位图
  89.         hbm = (HBITMAP)LoadImage(
  90.                 NULL,
  91.                 L"flower.bmp",
  92.                 IMAGE_BITMAP,
  93.                 0,
  94.                 0,
  95.                 LR_LOADFROMFILE);
  96.         //将位图选入设备环境
  97.         SelectObject(hdcmen, hbm);
  98.         //获取位图大小
  99.         GetObject(hbm, sizeof(BITMAP), &bm);
  100.        
  101. }
  102. //渲染
  103. void Render()
  104. {
  105.         if (hdc)
  106.         {
  107.                 //正常位图输出
  108.                 BitBlt(hdc, 200, 0, bm.bmWidth,bm.bmHeight,hdcmen, 0, 0, SRCCOPY);

  109.                 //缩放模式设置,一般采用COLORONCOLOR该模式来处理彩色点阵图
  110.                 SetStretchBltMode(hdc, COLORONCOLOR);
  111.                 //位图缩放输出
  112.                 /************************************************
  113.                 这里在设备环境中从(0,0)坐标并以宽为200,高为 200输出该位图,
  114.                 而该位图是从后备设备环境hdcmen中从(0,0)坐标开始,宽高为该位图大小的位图截取出来
  115.                 从而实现缩放显示
  116.                 *************************************************/
  117.                 StretchBlt(hdc, 0, 0, 200, 200, hdcmen, 0, 0, bm.bmWidth,bm.bmHeight, SRCCOPY);


  118.         }
  119. }
  120. //清除设备环境
  121. void CleanUp()
  122. {
  123.         //清除位图相关
  124.         DeleteObject(hbm);
  125.         DeleteDC(hdcmen);
  126.         ReleaseDC(hwnd, hdc);
  127. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-10 03:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表