Как узнать реальный размер картинки?

Тема в разделе "WASM.BEGINNERS", создана пользователем Gais, 24 июл 2008.

  1. Gais

    Gais New Member

    Публикаций:
    0
    Регистрация:
    28 мар 2007
    Сообщения:
    68
    Здравствуйте! Пробовал узнать размер функцией GetBitmapDimensionEx. Компилятор ругается на параметр
    pDimension Points to a SIZE structure to receive the bitmap dimensions.
    Думал, может я не подключил библиотеку, где стр-ра SIZE определена, искал, но не нашел данной структуры вообще.
    попробовал сам объявить:
    Код (Text):
    1. SIZE STRUCT
    2.   cx DWORD ?
    3.   cy DWORD ?
    4. SIZE ENDS
    Но все равно не выходит ничего.
    Функция GetBitmapDimensionEx возвращает размеры установленные SetBitmapDimensionEx, но та опять же не работает из-за структуры SIZE.

    Может есть какой-то другой способ?
     
  2. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Gais
    Код хотя бы привели...
     
  3. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    GetObject()?
     
  4. Gais

    Gais New Member

    Публикаций:
    0
    Регистрация:
    28 мар 2007
    Сообщения:
    68
    Код (Text):
    1. pict SIZE
    2. ...
    3. .if uMsg == WM_CREATE
    4.         invoke BitmapFromResource, hInstance, 2000
    5.         mov hBmp, eax
    6.  .elseif uMsg == WM_LBUTTONDOWN
    7.           invoke GetBitmapDimensionEx,hBmp,addr pict
    8.           invoke LoadPicture,cOp
    9.           invoke InvalidateRect,hWnd,NULL,TRUE
    LoadPicture
    это 2 строчки:
    Код (Text):
    1. invoke BitmapFromResource, hInstance, 2000
    2. mov hBmp, eax
    cOp - порядковый номер картинки в ресурсах
    Выводится на окно картинка:
    Код (Text):
    1.  inc  cOp  
    2.     invoke BeginPaint,hWnd,ADDR ps
    3.     mov hDC, eax
    4.  
    5.     invoke CreateCompatibleDC,hDC
    6.     mov memDC, eax
    7.    
    8.     invoke SelectObject,memDC,hBmp
    9.     mov hOld, eax
    10.  
    11.     invoke BitBlt,hDC,0,1,800,600,memDC,0,0,SRCCOPY
    12.  
    13.     invoke SelectObject,hDC,hOld
    14.     invoke DeleteDC,memDC
    15.  
    16.     invoke EndPaint,hWin,ADDR ps
     
  5. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    + много.

    Код (Text):
    1.   GetBitmapSize proc BTFS: HBITMAP;
    2.   .data?
    3.     gbs BITMAP <>;
    4.   .code
    5.     invoke GetObject, BTFS, SIZEOF BITMAP, ADDR gbs;
    6.     MOV EAX, gbs.bmHeight;
    7.     SHL EAX, 16;
    8.     MOV AX, WORD PTR [gbs.bmWidth];
    9.     RET;
    10.   GetBitmapSize endp;
    [+]: кстати да, почему не работало:
    The retrieved dimensions must have been set by the SetBitmapDimensionEx function. Т.е. если Вы их заранее не задали, то так или иначе будут выдаваться нули, вне зависимости от размеров картинки %)