Битмеп и bmp

Тема в разделе "WASM.BEGINNERS", создана пользователем maestro-ant, 17 фев 2007.

  1. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    Надо создать файл картинку .bmp с написаным текстом в ней.
    Я думаю, может содать битмеп а в нем уже написать текст и сохранить в файл.
    Кто нибудь знает как это сделать? интересует любая инфа.. функции апи..
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    DrawText / BitBlt
     
  3. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    Вот пытаюсь сделать сие..
    Код (Text):
    1. .data
    2.   hDC           dd ?
    3.   memDC         dd ?
    4.   memBM         dd ?
    5.   szText        db 'Hello',0
    6.   Rect          _RECT
    7.  
    8. .code
    9.   start:
    10.         invoke  CreateCompatibleDC,[hDC]
    11.         mov     [memDC],eax
    12.  
    13.         invoke  CreateCompatibleBitmap,[hDC], 100, 50 ;<<тут ошибка!
    14.         mov     [memBM],eax
    15.  
    16.         invoke  SelectObject,[memDC], [memBM]
    17.  
    18.         mov     [Rect.left],0
    19.         mov     [Rect.top],0
    20.         mov     [Rect.right],100
    21.         mov     [Rect.bottom],50
    22.  
    23.         invoke  DrawText,[hDC],szText,-1,Rect,1
    CreateCompatibleBitmap - возвращает 0, почему ошибка?
     
  4. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    у тебя hDC, который ты передаешь как параметр в эту ф-цию находится в секции неинициализированных данных, а ф-ция хочет как минимум handle, равный NULL.
    попробуй перед вызовом этой ф-ции обнулить hDC.
    а вообще, GetLastError и отладчик тебе многое скажут.
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Код (Text):
    1.         invoke  CreateCompatibleDC,[hDC]
    2.         mov     [memDC],eax
    3.  
    4.         invoke  CreateCompatibleBitmap,[hDC], 100, 50 ;<<тут ошибка!
    5.         mov     [memBM],eax
    жесть... прости, а что за hDC ты передаешь в первый раз? там же мусор
     
  6. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    идея в том, чтоб получить DC который не видно на экране, потом по нему нарисовать текст и сохранить в файл. Как это сделать правильно?
     
  7. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    ..вроди бы разобрался.. а как сохранит имеющийся битмеп в файл?
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ручками скорее всего. я не помню апишек для записи по хендлу HBITMAP картинки в файл.
    благо, структура BMP примитивна
     
  9. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Great
    OleSavePictureFile из oleaut32.dll не подойдет?
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    l_inc
    ммм хз) я ж сказал, что не помню :)
     
  11. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    Как я понял, нужно нужно сгенерить заголовок bmp дописать к нему битмэп и все это сохранитв файл. Как получить массив битмапа, ой того чтоб можно было с ним работать?
     
  12. MCNet

    MCNet New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2006
    Сообщения:
    74
    Можно заюзать библиотеку GD: http://gnuwin32.sourceforge.net/packages/gd.htm
     
  13. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    Нет, таскать за собой длл нельзя.
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    maestro-ant
    можно пихнуть её себе в ресурсы, при запуске вытащить во временный каталог и сделать LoadLibrary.
    жесть, но так обычно делают, когда прога ставит свой драйвер ядра.
     
  15. maestro-ant

    maestro-ant Member

    Публикаций:
    0
    Регистрация:
    23 июл 2006
    Сообщения:
    112
    Great у меня задача добится минимального размера.
    Как слить Bitmap зная его хендл в файл bmp?
     
  16. P_F

    P_F New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2006
    Сообщения:
    116
    Адрес:
    Russia
    если есть masm:
    masm32\examples\EXAMPLE2\SHOWDIB\DIBFILE.ASM
    если нет (или в лом) сливай...