Перейти к содержанию
Fire Monkey от А до Я

Steepe_Hare

Пользователи
  • Постов

    174
  • Зарегистрирован

  • Посещение

Активность репутации

  1. Like
    Steepe_Hare отреагировална Brovin Yaroslav в Приложения для Android, сделанные в Embarcadero RAD   
    Часть есть здесь:
    http://fire-monkey.ru/forum/18-приложения-написанные-с-использованием-firemonkey/
    Часть нужно искать по интернету...
  2. Like
    Steepe_Hare отреагировална Равиль Зарипов (ZuBy) в Приложения для Android, сделанные в Embarcadero RAD   
    @Евгений Корепов https://play.google.com/store/apps/developer?id=Евгений Корепов&hl=ru
    @ra.eremeev https://play.google.com/store/apps/details?id=com.embarcadero.MSPGOR&hl=ru
    других не помню, но их достаточно
  3. Like
    Steepe_Hare отреагировална Brovin Yaroslav в [Android] Почему возникает ошибка ECanvasException 'Handle not allocated'?   
    Дело в том, что у вас Image1.Bitmap, как экземпляр класса TBitmap присутствует. НО в нем нету никакой информации. То есть по факту у него размер равен 0 на 0. Это значит, что для него хендл не будет выделяться (Зачем системе хранить пустой битмап). Поэтому, когда вы пытаетесь с ним поработать и получить доступ к канве, то получаете такую ошибку:
    raised exception class ECanvasException with message 'Handle not allocated' Теперь смотрим ваш код:
    Image1.Bitmap.Canvas.BeginScene; Будет работать с канвой, но хендла нет. отсюда будет исключение.
    Image1.Bitmap.Clear(0); Опять же работает с канвой и пытается очистить пустой битмап.
    Image1.Bitmap.LoadFromStream(MemStream); Это корректный вызов, при загрузке нового битмапа будет выделен хендл на уровне Image1.Bitmap.
    Соответственно, вам нужно:
    Сформировать новый битмап Загрузить его в Image1.Bitmap На Windows используется GDI+/Direct2D канва, которая может работать по другому. А на мобильных платформах GPU, поэтому у вас и возникает ошибка.
  4. Like
    Steepe_Hare отреагировална Равиль Зарипов (ZuBy) в [Android] Почему возникает ошибка ECanvasException 'Handle not allocated'?   
    Image1.Bitmap.Canvas.BeginScene; ... Image1.Bitmap.Canvas.EndScene; это тут не нужно, т.к. не работаете с Canvas'ом
  5. Like
    Steepe_Hare отреагировална Brovin Yaroslav в [Android] Почему возникает ошибка ECanvasException 'Handle not allocated'?   
    В какой момент создаете битмап?
  6. Like
    Steepe_Hare отреагировална kami в TBitmap и экономия памяти   
    Не совсем. То есть - технически правильно, но идеологически - нет.
    Проведем мысленный эксперимент: что случится, если на BeginScene возникнет исключение? Правильно, битмап не будет уничтожен, потому что этот код не выполнялся внутри Try. Поэтому, если заниматься буквоедством, то код должен выглядывать так:
    MyBitmap := TBitmap.CreateFromFile(OpenDialog1.Files[0]); try Image1.Bitmap.Canvas.BeginScene; try Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect, 20); finally Image1.Bitmap.Canvas.EndScene; end; finally myBitmap.Free; end;
  7. Like
    Steepe_Hare отреагировална Прикладной в Firemonkey Knowledge Base   
    Смущает, наверное, то, что нет русской справки
  8. Like
    Steepe_Hare отреагировална Равиль Зарипов (ZuBy) в TBitmap и экономия памяти   
    обязательно нужно очистить
×
×
  • Создать...