Как с помощью функции GetPropertyItem взять параметры задержки кадра

Тема в разделе "WASM.BEGINNERS", создана пользователем assch, 29 июн 2011.

  1. assch

    assch Member

    Публикаций:
    0
    Регистрация:
    17 мар 2011
    Сообщения:
    208
    В одной статье GDI+: графика нового поколения нашёл пример как вывести анимированный Gif в окно приложения
    Но там было сказано что в примере вывод анимации намеренно происходит с максимально возможной скоростью,
    для наглядного показа производительности. В реальном же приложении потребуется получить
    параметры задержки кадров из графического файла (вызвав функцию Image::GetPropertyItem с параметром
    PropertyTagFrameDelay).

    Сам алгоритм выглядит так:

    Код (Text):
    1. invoke MultiByteToWideChar,0,0,addr buffer,-1,addr Unicod,addr Char
    2. invoke GdipLoadImageFromFile,addr Unicod, addr hImag
    3. invoke GdipGetImageWidth, hImag, addr sWidth
    4. invoke GdipGetImageHeight, hImag, addr sHeight
    5. invoke GdipImageGetFrameDimensionsCount, hImag,addr sFdcount
    6. invoke GdipImageGetFrameDimensionsList, hImag,addr pGUID,sFdcount
    7. invoke GdipImageGetFrameCount, hImag,addr pGUID,addr sFrame
    8. invoke GdipImageSelectActiveFrame, hImag,addr pGUID,pFrame
    В последней функции GdipImageSelectActiveFrame находится:

    hImag - адрес где лежит кадр файла
    pFrame - номер кадра

    дальше нужно подключать функцию GdipGetPropertyItem (чтобы вытащить время задержки кадра)
    Константа параметра PropertyTagFrameDelay - 5100h

    Код (Text):
    1. invoke GdipGetPropertyItemSize, hImag,5100h,addr pbyte
    2. invoke GdipGetPropertyItem,hImag,5100h,pbyte,addr xxx
    Пришлось подключить функцию GdipGetPropertyItemSize (как того требовало описание функции GdipGetPropertyItem)
    Но нечего так и не добился (хотя не исключено что я всё сделал не правильно)

    Кто нибудь в курсе этой темы?
    Подскажите пожалуйста