GDI + Image::Save方法需要CLSID参数来指定要使用的编码器.该文档指向一些示例代码,用于获取与特定MIME类型相关联的编码器,例如image/jpeg或image/png.但是我想到复制一个半页函数只是为了支持一行调试辅助,我将中间结果保存到磁盘.
不应该有标准编码器的标准CLSID列表吗?我在哪里可以找到这样的清单?我无法通过搜索Microsoft的包含文件找到一个.
我是新的C++和被具有使用GDI +库在存储器中创建新的位图(因此不是打开/读出一个现有的位图)写的函数麻烦; 然后绘制位图; 在保存到png之前.特别是,我在创建位图和保存代码方面遇到了问题.我被限制使用代码块,即使我想,我也不能使用视觉工作室.代码如下:
#include "drawImage.h"
#include <windows.h>
#include <objidl.h>
#include <gdiplus.h>
#include <stdio.h>
#include <iostream>
using namespace std;
using namespace Gdiplus;
drawImage::drawImage(){}
void drawImage::DrawBitmap(int width, int height){
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
{
//Create a bitmap
Bitmap myBitmap(width, height, PixelFormatCanonical);
Graphics g(&myBitmap);
Pen blackpen(Color(255,0,0,0), 3);
//draw on bitmap
int x1 = 1;
int x2 = 200;
int y1 = 1;
int y2 = 200;
g.DrawLine(&blackpen, x1,y1,x2,y2);
// Save bitmap (as a png)
CLSID pngClsid;
GetEncoderClsid(L"image/png", &pngClsid);
myBitmap.Save(L"C:\\test\\test.png", …Run Code Online (Sandbox Code Playgroud)