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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ алгоритм эвклида http://www.cyberforum.ru/cpp-beginners/thread1497529.html
как работает этот код? int gcd(int a, int b) { while(b) b^=a^=b^=a%=b; return a; }
C++ Макрос BEGIN_MESSAGE_MAP Пытаюсь разораться что делает макрос BEGIN_MESSAGE_MAP(CSpaceship,CCmdTarget) Там код получается неясный, вот определение самого макроса: #define BEGIN_MESSAGE_MAP(theClass, baseClass) \ PTM_WARNING_DISABLE \ const AFX_MSGMAP* theClass::GetMessageMap() const \ { return GetThisMessageMap(); } \ const AFX_MSGMAP* PASCAL theClass::GetThisMessageMap() \ { \ typedef theClass... http://www.cyberforum.ru/cpp-beginners/thread1497528.html
C++ Циклы while и for: в чем суть отличия?
Пытаюсь понять в чем суть отличия между этими циклами. Пишутся по разному, а по сути тоже самое. Можно ли написать цикл while таким образом, чтобы нельзя было сделать аналогичный цикл с for? или наоборот
Сладкая олимпиадная задача C++
Дан торт который порезан на m*n равных кусков и вы хотите иметь точно один фрукт на каждом куске. Давайте обозначим f(m,n) количество разных вариантов верхушек на торте с m разными фруктами(m ≥ 2), используя каждый фрукт на точно n кусках ( n ≥ 1). Reflections are considered distinct, rotations are not. (Эту строку не знаю как правильно перевести на русский) Например, f(2,1) = 1, f(2,2) =...
C++ График по формуле http://www.cyberforum.ru/cpp-beginners/thread1497468.html
Написал программу , но она не выводит консоль , в чем проблема? #include <GL/glut.h> #include <iostream> #include <math.h> #include <string> #include <fstream> #include <vector> int count = 0; // Размер масива У,Х float* X; // масив для хранение х-ов
C++ Прерывания выполнения программы Подскажите как реализовать подобрый алгоритм Крутиться цикл(условно бесконечный) При нажатии определенной клавиши происходит прерывания выполнения цикла и переход к подальшим действиям Добавлено через 1 час 26 минут Спасибо, разобрался. подробнее

Показать сообщение отдельно
NU_User
0 / 0 / 0
Регистрация: 12.07.2015
Сообщений: 7
12.07.2015, 12:08     GDI+ Как Image сохранить в буфер / массив?
Здравствуйте, сижу бьюсь над проблемой рисования в памяти через 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;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru