Создание 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, хотя раздел о растровых изображениях имеет дело только с загрузкой существующих растровых изображений (без создания новых в памяти)

Я полностью потерялся в том, что делать, поэтому любая помощь или совет по этому вопросу очень ценятся.

Ответы на вопрос(2)

Ваш ответ на вопрос