Вопрос про Mac OS и Objective-C.

Тема в разделе "WASM.BEGINNERS", создана пользователем Al Shark, 16 апр 2020.

Метки:
  1. Al Shark

    Al Shark New Member

    Публикаций:
    0
    Регистрация:
    16 май 2006
    Сообщения:
    13
    Адрес:
    Moscow
    У меня есть код на асме:

    Код (ASM):
    1.  
    2. invoke  GetDC,wphwnd
    3. mov [mainDC],eax
    4. invoke  CreateCompatibleDC,eax
    5. mov [bitmapDC],eax
    6. invoke  CreateDIBSection,eax,[BitmapHeaderAdr],DIB_RGB_COLORS,offset bitmapdibs,0,0
    7. mov [handledibs],eax
    8. invoke  SelectObject,[bitmapDC],eax
    9. ...
    10. invoke  BitBlt,[mainDC],0,32,sizex,sizey,[bitmapDC],0,0,SRCCOPY
    11.  
    Суть кода: получаем контекст окна, создаем битмап совместимый с этим контекстом, создаем участок памяти (дибсекцию) и ассоциируем ее с битмапом т. е. теперь у меня есть участок памяти(bitmapdibs) который дает прямой доступ к данным битмапа. Программа очень часто меняет и блитит(BitBlt) содержимое этого битмапа в окно).

    Вопрос: Как то-же самое сделать используя Objective-C? Можно перефразировать так: Как получить адрес битмап данных NSImage, чтобы можно было напрямую менять изображение?

    Подозреваю, что это нужно делать не напрямую с NSImage, а через CGImage, но могу ошибаться т. к. в Mac OS да и в Objective-C пока полный ноль.