@DoubleTree

Bitmap.Save() — не работает, с++, что делать?

Я пытаюсь сохранить Png на диск, но по какой-то причине не сохраняется.
Я сохранял изображение в буфер и всё было хорошо, картинка действительно была такой,какой нужно.
Но на диск сохранить не могу, ошибки нету, ровно как и результата.

#include <windows.h>

#include <gdiplus.h>
#pragma comment(lib, "GdiPlus.lib")

void screenShot()
{
    const int xCordStart = GetSystemMetrics(SM_XVIRTUALSCREEN);
    const int yCordStart = GetSystemMetrics(SM_YVIRTUALSCREEN);
    const int xCordFinish = GetSystemMetrics(SM_CXVIRTUALSCREEN);
    const int yCordFinish = GetSystemMetrics(SM_CYVIRTUALSCREEN);

    const int width = 500;
    const int height = 500;

    HDC hScreen = GetDC(0);
    HDC hDc = CreateCompatibleDC(hScreen);
    HBITMAP hBitmap = CreateCompatibleBitmap(hScreen, width, height);
    HGDIOBJ old_obj = SelectObject(hDc, hBitmap);
    BOOL bRet = BitBlt(hDc, 0, 0, width, height, hScreen, 0, 0, SRCCOPY);

    Gdiplus::Bitmap bitmap(hBitmap, NULL);
    const GUID png{ 0x557cf406, 0x1a04, 0x11d3, {0x9a, 0x73, 0x00, 0x00, 0xf8, 0x1e, 0xf3, 0x2e} };
    bitmap.Save(L"C:/save.png", &png);
    DeleteObject(hBitmap);
}
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Limons
Ещё не совсем понятно, точнее что вообще-то зачем это:
Gdiplus::Bitmap bitmap(hBitmap, NULL);

И не понятно:
Почему HGDIOBJ old_obj = SelectObject(hDc, hBitmap);
А не SelectObject(hDc, hBitmap);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы