如何从base64创建HICON?
How to create a HICON from base64?
我正在将一张图片从base64字符串转换为注册新类时可以工作的HICON
:
WNDCLASSEX wc{};
wc.hIcon = < here >;
我在这里得到了base64_decode()
函数:base64.cpp
#include <windows.h> // GDI includes.
#include <objidl.h>
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib,"Gdiplus.lib")
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
std::string base64 = "......";
std::string decodedImage = base64_decode(base64);
DWORD imageSize = decodedImage.length();
HGLOBAL hMem = ::GlobalAlloc(GMEM_MOVEABLE, imageSize);
LPVOID pImage = ::GlobalLock(hMem);
memcpy(pImage, decodedImage.c_str(), imageSize);
IStream* pStream = NULL;
::CreateStreamOnHGlobal(hMem, FALSE, &pStream);
Gdiplus::Image image(pStream);
int wd = image.GetWidth();
int hgt = image.GetHeight();
auto format = image.GetPixelFormat();
Bitmap* bmp = new Bitmap(wd, hgt, format);
auto gg = std::unique_ptr<Graphics>(Graphics::FromImage(bmp));
gg->Clear(Color::Transparent);
gg->DrawImage(image, 0, 0, wd, hgt);
...
我找不到从Image
获取HICON
的方法,所以我试图将Image
转换为Bitmap
。
我在行上收到这两个错误gg->DrawImage(image, 0, 0, wd, hgt);
C2664 'Gdiplus::Status
Gdiplus::Graphics::D rawImage(Gdiplus::Image *,Gdiplus::REAL,Gdiplus::REAL,Gdiplus::REAL,Gdiplus::REAL)':无法将参数 1 从 'Gdiplus::Image' 转换为 'Gdiplus::Image *'E0304 没有重载函数"Gdiplus::Graphics::D rawImage"的实例与参数列表匹配
无法将参数 1 从 'Gdiplus::Image' 转换为 'Gdiplus::Image *'
DrawImage()
需要一个指向Image
对象的指针,但您却将实际对象传递给它。
更改此语句:
gg->DrawImage(image, 0, 0, wd, hgt);
对此:
gg->DrawImage(&image, 0, 0, wd, hgt); // <-- note the added '&' ...
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- 链接到自行创建的dll失败
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++类内存结构中创建"spacer"?
- 通过将现有HICON绘制为HBITMAP,从现有HICON创建HICON
- 如何通过代码创建一个简单的MFC统一颜色HICON图标