Olexy Asked:2020-03-08 19:33:47 +0800 CST2020-03-08 19:33:47 +0800 CST 2020-03-08 19:33:47 +0800 CST 如何使用 WinApi 上传和显示图像? 772 解释如何加载和输出位图? 另外,据我了解,并不是所有的bmp图片都适合,对它们有什么要求? c++ 1 个回答 Voted Best Answer t3f 2020-03-10T05:00:50+08:002020-03-10T05:00:50+08:00 选项 1 - GDI // загрузка bitmap-а из файла: HBITMAP hBmp = (HBITMAP)LoadImage(NULL, L"C:\\файл.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); // создание memory DC для этого bitmap-а: HDC bmpDC = CreateCompatibleDC(wndDC); SelectObject(bmpDC, hBmp); // вывод (wndDC - HDC окна): BitBlt(wndDC, 0, 0, width, height, bmpDC, 0, 0, SRCCOPY); // освобождение ресурсов: DeleteDC(bmpDC); DeleteObject(hBmp); 选项 2 - GDI+ 头文件和命名空间: #include <gdiplus.h> using namespace Gdiplus; 您还需要链接导入库gdiplus.lib。在 Visual Studio 中,您可以为此使用指令: #pragma comment(lib, "gdiplus.lib") GDI+需要初步初始化,启动应用程序时,需要运行: ULONG_PTR gdiToken; GdiplusStartupInput gdiInput; GdiplusStartup(&gdiToken, &gdiInput, NULL); 当应用程序结束时: GdiplusShutdown(gdiToken); 加载和输出位图: Graphics graphics(wndDC); //wndDC - HDC окна Bitmap bmp(L"C:\\файл.bmp"); graphics.DrawImage(&bmp, 0, 0, width, height); 选项 3 - Direct2D 微软推荐(GDI 和 GDI+ 已弃用),但最不方便的选择是你需要为这样一个简单的任务编写太多代码(所以我不会在这里写)。MSDN上有例子: 创建一个简单的 Direct2D 应用程序 如何从文件加载位图 如何绘制位图
选项 1 - GDI
选项 2 - GDI+
头文件和命名空间:
您还需要链接导入库
gdiplus.lib
。在 Visual Studio 中,您可以为此使用指令:GDI+需要初步初始化,启动应用程序时,需要运行:
当应用程序结束时:
加载和输出位图:
选项 3 - Direct2D
微软推荐(GDI 和 GDI+ 已弃用),但最不方便的选择是你需要为这样一个简单的任务编写太多代码(所以我不会在这里写)。MSDN上有例子:
创建一个简单的 Direct2D 应用程序
如何从文件加载位图
如何绘制位图