Win API для анимации.

Discussion in 'WASM.BEGINNERS' started by neyro, Dec 18, 2007.

  1. neyro

    neyro New Member

    Blog Posts:
    0
    Joined:
    Dec 11, 2007
    Messages:
    18
    Кто ни будь скажет, есть ли API функция подобная функции 0СН прерывания 10Н
    для рисования точки на экране, или это уже не входит в компетенцию API?
    Если так, тогда как вообще организовать анимацию в Win 32?
     
  2. nester7

    nester7 New Member

    Blog Posts:
    0
    Joined:
    Dec 5, 2003
    Messages:
    720
    Location:
    Russia
    http://www.wasm.ru/publist.php?list=1
     
  3. loxodromic

    loxodromic New Member

    Blog Posts:
    0
    Joined:
    Dec 2, 2007
    Messages:
    65
    на масме :

    Code (Text):
    1. invoke   GetDC, hWnd
    2.  
    3. mov hdc,eax
    4.  
    5. invoke  SetPixel,hdc,xpos,ypos,000FF00h     ; green
    6.  
    7. ; получить значение пиксела
    8.  
    9. invoke GetPixel,hdc,xpos,ypos
    Ходят упорные слухи, что эти функции медленные и для проведения масштабных работ на экране нужно
    юзать другие методы.
    Для бытовых целей - вполне сгодятся.
    Сделал себе конвертор - меняет цвета пикселов определенного
    цвета (нужно было в нескольких десятках картинок уменьшить
    якость цветов и так, чтобы при преобразовании в гиф не возникало искажений). Найти готовую программу не смог... а написал - за 30 минут..., разумеется методом "копи-пасте". На сайте много интересных исходников, из которых можно сделать почти всё, до чего можно додуматься без употребления грибочков и вытяжки из кактусов.

    А... там же ещё про анимацию. Есть такие функции.
     
  4. BaGiE

    BaGiE New Member

    Blog Posts:
    0
    Joined:
    Mar 27, 2005
    Messages:
    84
    Location:
    Mordor
    Ага, лучше создать DC, потом заюзать CreateDIBSection и скопировать через BitBlt туда обрабатываемую картинку, а в конце обратно куда надо (это вроде называется Double Buffering или хз как :) ) Ну а получать доступ к пикселам как к массиву в памяти.
     
  5. Mikl_

    Mikl_ New Member

    Blog Posts:
    0
    Joined:
    Nov 14, 2006
    Messages:
    907
    neyro
    Поточечная графика SetPixel, GetPixel есть API для работы с линиями, регионами, но тебе скорее подойдет вот это
     
  6. Xerx

    Xerx Алексей

    Blog Posts:
    0
    Joined:
    Feb 17, 2005
    Messages:
    528
    Location:
    Russia
    SetPixel / GetPixel ОЧЕНЬ медленные. BitBlt тоже не блещет...
     
  7. RamMerLabs

    RamMerLabs Well-Known Member

    Blog Posts:
    0
    Joined:
    Sep 11, 2006
    Messages:
    1,426
    зачем топикапить? тс, уже, наверное, разобрался, раз не пишел больше
     
  8. neyro

    neyro New Member

    Blog Posts:
    0
    Joined:
    Dec 11, 2007
    Messages:
    18
    Да, мужики, спасибо, действительно разобрался.
     
  9. Vov4ick

    Vov4ick Владимир

    Blog Posts:
    0
    Joined:
    Oct 8, 2006
    Messages:
    581
    Location:
    МО
    Чтобы новую тему не создавать, хотел спросить, что если выводить графику прямой записью в память по адресу 0a0000h, будет быстро и хорошо, не считая необходимости смотреть за ходом луча. Или метод того не стоит? Заранее извиняюсь, под венду программирую не много...
     
  10. neyro

    neyro New Member

    Blog Posts:
    0
    Joined:
    Dec 11, 2007
    Messages:
    18
    Прямой записью не получится, по крайней мере в режимах с номерами от 0Dh, и
    по 13h. Такой метод сработает только в текстовом режиме или в режимах True Color,
    но последние работают только с линейной 32 разрядной адресацией памяти, то есть,
    под Виндой или нужен специальный метод переключения в линейный режим из ДОСа.
    Такой метод описан у Кулакова.
     
  11. Vov4ick

    Vov4ick Владимир

    Blog Posts:
    0
    Joined:
    Oct 8, 2006
    Messages:
    581
    Location:
    МО
    Под вендой уже линейный режим, я имел в виду вынь32 приложение. Хотя видеобуфер может находиться не обязтельно по a0000h, на моей карточке\винде запись туда WinHex'ом отобразилась на экране.