своя отрисовка анимированной картинки
От: Savin2  
Дата: 24.12.12 11:31
Оценка:
можно ли сделать свою собственную отрисовку анимированного изображения (APNG например) ?
что-то вроде element.OnPaint(DC: HDC; Rect: TRect)
возможно ли это сделать через external-behavior (прежде чем пытаться сделать, хотелось бы знать, что это возможно ) ?

что нужно уметь:
1. прозрачность (желательно уметь получать фон под картинкой)
2. вызывать обновление картинки в нужный момент (смена кадра, hottrack)
3. изменять размеры картинки

ЗЫ: есть картинка, которая имеет несколько состояний и меняется в зависимости от них используя анимацию
хотелось бы её вставить в документ, а не писать новый аналогичный механизм
Re: своя отрисовка анимированной картинки
От: c-smile Канада http://terrainformatica.com
Дата: 25.12.12 05:34
Оценка:
Здравствуйте, Savin2, Вы писали:

S>можно ли сделать свою собственную отрисовку анимированного изображения (APNG например) ?


APNG поддерживается из коробки что называется. Или нужно что-то сверх того?

S>ЗЫ: есть картинка, которая имеет несколько состояний и меняется в зависимости от них используя анимацию

S> хотелось бы её вставить в документ, а не писать новый аналогичный механизм

Эта картинка статическая? В смысле её можно положить в ресурсы и оттуда использовать?
Или она генерируется в runtime?
Re[2]: своя отрисовка анимированной картинки
От: Savin2  
Дата: 25.12.12 09:22
Оценка:
Здравствуйте, c-smile, Вы писали:

S>>можно ли сделать свою собственную отрисовку анимированного изображения (APNG например) ?

CS>APNG поддерживается из коробки что называется. Или нужно что-то сверх того?

читает данные из произвольного источника (с проверкой валидности), приводит к одному виду, оптимизирует размер кадра, накладывает оверлей, применяет маску прозрачности и т.д.,
всё это сделано для скорости

S>>ЗЫ: есть картинка, которая имеет несколько состояний и меняется в зависимости от них используя анимацию

S>> хотелось бы её вставить в документ, а не писать новый аналогичный механизм
CS>Эта картинка статическая? В смысле её можно положить в ресурсы и оттуда использовать?
CS>Или она генерируется в runtime?

картинка динамическая (+ сама следит за обновлением источника данных), зависит от внешних условий и может измениться в произвольный момент (что нужно сразу отразить)
и может использоваться не только в html но и просто в окнах

задача отчасти в высокой скорости отрисовки (встроенная заметно медленней), отчасти в удобстве управления изображением
(ближайший аналог — аватар собеседника отображаемый в нескольких местах)
Re: своя отрисовка анимированной картинки
От: c-smile Канада http://terrainformatica.com
Дата: 26.12.12 00:37
Оценка:
Здравствуйте, Savin2, Вы писали:

S>можно ли сделать свою собственную отрисовку анимированного изображения (APNG например) ?

S> что-то вроде element.OnPaint(DC: HDC; Rect: TRect)
S>возможно ли это сделать через external-behavior (прежде чем пытаться сделать, хотелось бы знать, что это возможно ) ?

Cм. пример
\htmlayoutsdk\html_samples\behaviors\live-clock.htm

и код рисующего behavior:

htmlayoutsdk\include\behaviors\behavior_clock.cpp, в частности метод

virtual BOOL on_draw   (HELEMENT he, UINT draw_type, HDC hdc, const RECT& rc ) 
    { ... )


S>что нужно уметь:

S>1. прозрачность (желательно уметь получать фон под картинкой)
S>2. вызывать обновление картинки в нужный момент (смена кадра, hottrack)

htmlayout_dom.hpp:

class dom::element {
   ...
   void refresh() const 
       { 
          RECT rc = get_location(BORDER_BOX);
          ::InvalidateRect(get_element_hwnd(false),&rc,FALSE);
       }
   ...
}


S>3. изменять размеры картинки


dom::element::set_style_attribute("width", ...)


?

S>ЗЫ: есть картинка, которая имеет несколько состояний и меняется в зависимости от них используя анимацию

S> хотелось бы её вставить в документ, а не писать новый аналогичный механизм
Re[2]: своя отрисовка анимированной картинки
От: Savin2  
Дата: 26.12.12 09:54
Оценка:
спасибо, будем пробовать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.