Создание GDI + растровых изображений в памяти, а затем сохранение в формате PNG
Я новичок в 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", &pngClsid, NULL);
}
GdiplusShutdown(gdiplusToken);
}
У меня есть следующие проблемы:
Код «сохранения» не компилируется и выдает сообщение об ошибке «GetEncoderClsid не был объявлен в этой области». Тем не менее, я получил это прямо с сайта MicrosoftВот, Я не думаю, что это правильный способ преобразования в PNG, но я не знаю альтернативный способ?
Когда код скомпилирован и запущен (закомментировав код сохранения), он падает на строку «Bitmap * myBitmap = new Bitmap (width, height, PixelFormatCanonical);» и выдает сообщение об ошибке, в котором говорится, что мой исполняемый файл перестал работать.
Я добавил библиотеку компоновщика 'gdi32', а также '-lgdiplus' в качестве опции компоновщика. Кроме того, я использовалэтот сайт чтобы помочь с GDI, хотя раздел о растровых изображениях имеет дело только с загрузкой существующих растровых изображений (без создания новых в памяти)
Я полностью потерялся в том, что делать, поэтому любая помощь или совет по этому вопросу очень ценятся.