Как получить разрешение для битмэпа?

Тема в разделе "WASM.WIN32", создана пользователем Green_DiCk, 9 дек 2008.

  1. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    217.118.66.102

    С пом. ф-ции LoadImage() загрузил картинку из файла. Получил в руки ее хэндл. А как теперь можно узнать исходное разрешение картинки?

    Покопавшись в апи нашел прелестную в своей бесполезности ф-цию GetBitmapDimensionEx(). Она возвращает мне нулевые размеры картинки. Но все правильно! Чтобы получить ненулевые размеры нужно сначала устанoвить их с пом. соответвующей ф-ции SetBitmapDimensionEx(). Бред вообщем..

    Еще интересует (больше в теории) вопрос получения по хэндлу непосредсвенно указателя на память где моя картинка хранится.
     
  2. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    вроде здесь было что-то, надо разбираться, много букв... и все разные
     
  3. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    driver
    Спасибо. То что надо. Только я в Питоне не силен или на чем там исходники..

    что значит вот такой вот конструкт:
    mov cx, BITMAPFILEHEADER.bfType[ebx]

    ?
     
  4. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Green_DiCk
    Во первых исходного разрешения может и не быть в самом файле с картинкой ;) загляни в структуру BITMAPINFOHEADER в файле.
    а здесь есть только путь наоборот - грузить картинку из файла самому, а затем уже делать для неё handle но после CreateDIBitmap, связь этого handle с картинкой разорвётся - т.е. она просто будет скопирована куда-то и тебе возвращён handle. А если очень хочется оставить доступ к картинке, то отображай её через StretchDIBits без получения handle.

    Ещё поиграйся с GDI+ может больше понравится ;)
     
  5. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    Y_Mur
    >грузить картинку из файла самому, а затем уже делать для неё handle

    А это как это?
     
  6. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    А тут смотрел?
    C:\masm32\examples\exampl02\showdib
     
  7. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    Green_DiCk - go to the http://masm32.by.ru/

    и за вечер можно стать почти что асм-гуру, если голова правильно заточена...
     
  8. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    217.118.66.102

    S_Alex
    >>>грузить картинку из файла самому

    >>А это как это?

    >А тут смотрел?
    >C:\masm32\examples\exampl02\showdib

    Ключевая фраза не "грузить картинку из файла самому", а "а затем уже делать для неё handle". Как сделать хэндл в masm32\examples\exampl02\showdib не написано. Там почти точь в точь такой же пример какойdriver приаттачил.

    >go to the http://masm32.by.ru/
    Не работает. Да и не надо уже. Вкурил я что та конструкция значит.

    Эх. все таки до чего черезжопно некоторые вещи в венде сделаны. прямо диву даешься...
     
  9. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    invoke LoadImage,NULL,ADDR FileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE
    mov [hBMP], eax