Форум программистов, компьютерный форум CyberForum.ru

GDI+ Как Image сохранить в буфер / массив? - C++

Восстановить пароль Регистрация
 
NU_User
0 / 0 / 0
Регистрация: 12.07.2015
Сообщений: 7
12.07.2015, 12:08     GDI+ Как Image сохранить в буфер / массив? #1
Здравствуйте, сижу бьюсь над проблемой рисования в памяти через GDI+

В память рисует, всё работает, но я никак не могу сообразить как же сохранить Image не в файл, а в буфер

Например canvas это Image, и в файл он сохраняется

C++ (Qt)
1
2
3
4
    
    CLSID pngClsid;
    GetEncoderClsid(L"image/png", &pngClsid);
    canvas->Save(L"D:\\pic.png", &pngClsid, NULL); //
Но как же сделать сохранить в буфер, в классе есть метод

C++ (Qt)
1
2
3
4
5
Image::Save(
    IN IStream* stream,
    IN const CLSID* clsidEncoder,
    IN const EncoderParameters *encoderParams
    )
а как им воспользоваться, и возможно ли мне сохранить его потом в буфер без предварительной записи в файл?

Добавлено через 58 минут
А всё сделал
Правда пришлось пользоваться уродливой ф-ией

C++ (Qt)
1
Stream *stream = SHCreateMemStream(NULL, NULL);
Тыкал, тыкал и натыкал, вроде заработало, если кто покажет как это сделать умнее - буду очень благодарен

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    IStream *stream = SHCreateMemStream(NULL, NULL);
 
    CLSID pngClsid;
    GetEncoderClsid(L"image/png", &pngClsid);
    stat    =   canvas->Save(stream, &pngClsid, NULL);
 
    unsigned long ree;
    ULARGE_INTEGER dd;
 
    LARGE_INTEGER d;
    d.HighPart = 0;
    d.LowPart = 0;
    d.QuadPart = 0;
 
    stream->Seek(d, STREAM_SEEK_CUR, &dd);
 
    unsigned long si111ze = dd.LowPart;
 
    stream->Seek(d, STREAM_SEEK_SET, &dd);
 
 
    int ss = stream->Read(mem, si111ze, &ree);
 
    *p = mem;
    *size = si111ze;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2015, 12:08     GDI+ Как Image сохранить в буфер / массив?
Посмотрите здесь:

Как через GDI нарисовать пиксел на окне? C++
C++ как в тексте (из файла) найти все числа и сохранить их в отдельный массив??
как заставить не затирать окном полученную графику в GDI? C++
Функция создает объекты и указателями на них заполняет массив. При выходе из функции вызываются деструкторы объектов. Как сохранить объекты? C++
Как подключить GDI+ в Code::Blocks? C++
C++ Массив int перевести в буфер
Как поэлементно считать текст с файла с помощью fstream, и сохранить каждый символ в массив? C++
String как буфер C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 03:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru