WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Помогите с Bitmap`ами, плиз!

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Помогите с Bitmap`ами, плиз!
Mihail опубликован 23-05-2001 09:34 MSK   Click Here to See the Profile for Mihail   Click Here to Email Mihail  
Я прочитал статью на "Исходниках" про битовые образы и
контекст памяти.
http://www.sources.ru/cpp/cpp_cbitmap_onpaint.shtml
По этому поводу у меня возник вопрос: как мне создать bitmap, который
располагается только в памяти и нигде не рисуется, а после отрисовки в
памяти, например сохраняется в файл. Т. е. например, у меня есть Dll, в
которой, скажем, есть некая функция, которая создает в памяти рисунок
(монохромный) и, преобразуя его в строку, возвращает или сохраняет в файл.
Проблема заключается в использовании CDC. При создании совместимого контекста
необходимо иметь уже существующий контекст, с которым и будет совместимость.
Если его нет, то можно создать экземпляр CDC "c нуля", вызвав
функцию CreateDC(...).

virtual BOOL CreateDC( LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput, const void* lpInitData );

{Visual C Documentation -> Reference -> Microsoft Foundation Class
Library -> Class Library Reference -> CDC -> Member Functions ->
CDC::CreateDC}

Но в этом случае необходимо знать имя драйвера. А какое оно будет для
отрисовки в памяти?


--
С уважением,
Михаил.

Mihail опубликован 23-05-2001 09:34 MSK     Click Here to See the Profile for Mihail  Click Here to Email Mihail     
И как потом мне этот рисунок сохранить в файл и представить в виде строки?
OlegN опубликован 23-05-2001 10:54 MSK     Click Here to See the Profile for OlegN  Click Here to Email OlegN     
Есть пару вариантов :
::CreateCompatibleDC(NULL);
или
CreateDC("DISPLAY", NULL, NULL, NULL);

Для получения заголовка bitmap-a
и массива бит используй
::GetObject и структуру BITMAP
Ну а как записать массив в файл я тебе рассказывать не буду.

al опубликован 23-05-2001 11:20 MSK     Click Here to See the Profile for al  Click Here to Email al     
Для работы с битмапами в памяти в Win32 есть
специальная функция CreateDIBSection.
talex опубликован 17-07-2001 15:00 MSK     Click Here to See the Profile for talex  Click Here to Email talex     
Ya tut uslishal o tom chto vi govorite.
I podumal mozhet vi mne pomozhete.
Ya poluchayu etot chertov masiv bitov.
menya interesyet poryadok tsvetov v
etom massive. T.e. pix[0] = red0, pix[1] = green0, pix[2] = blue[0], pix[3] =red1,
pix[4] = green1, pix[5] = blue1..... i t.p.
Tak li eto?
Thx zaranee.
golem опубликован 27-07-2001 17:00 MSK     Click Here to See the Profile for golem  Click Here to Email golem     
Нет. В Windows не RGB, а BGR.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.