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

Pavel Vasilev

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

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

  • Посещение

  • Победитель дней

    3

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

  1. Like
    Pavel Vasilev получил реакцию от sulion в Аналог GLScene для Firemonkey   
    Только с тех пор адрес и название сменилось для поддержки OpenVX  на
    https://sourceforge.net/p/glscene/code/HEAD/tree/branches/VXScene/
  2. Like
    Pavel Vasilev получил реакцию от AngryOwl в Использование OpenGL?   
    Подготовка GLXcene компонентов на основе OpenGL для FMX (пока только для win32/64) возобновлена по новому адресу
    https://github.com/GLScene/GLScene/tree/master/Source/FMX
    Синхронизация юнитов и форм почти завершена с помощью BeyondCompare (входит теперь в состав редактора RAD Studio), префиксы классов и компонентов теперь разные, чтобы можно было устанавливать сразу обе сцены: у VCL - TGL.., у FMX - Tgx...
    Пока компилируются run-time пакеты GLXcene for Delphi/C++Builder, а для design-time необходимо ещё добавить форму вьюера OpenGL и модуль дизайнера компонентов. 
    Для разработки графических 3D приложений под OpenGL для Delphi/C++Builder & Lazarus (Win/Linux/iOS/Android) лучше чем графический  движок рендеринга GLScene ничего нет - в нём также есть своя физика, вейвлеты, менеджеры подключения сторонних звуковых и физических движков (BASS, OpenAL, Newton). Версия GLXcene объединит возможности Firemonkey для 3д моделирования и визуализации с имеющимися для Vcl версии. 
    Имеющие опыт создания компонентов под FMX, приглашаются принять участие в дальнейшей разработке графической платформы на гитхаб
    https://github.com/GLScene/GLScene  
     

  3. Like
    Pavel Vasilev получил реакцию от Rusland в Аналог GLScene для Firemonkey   
    Только с тех пор адрес и название сменилось для поддержки OpenVX  на
    https://sourceforge.net/p/glscene/code/HEAD/tree/branches/VXScene/
  4. Like
    Pavel Vasilev получил реакцию от Rusland в Возможно ли работать с OpenGL в FireMonkey?   
    Да, можно, пример использования OpenGL 
    в FireMonkey есть  по адресу  
    https://github.com/tothpaul/Delphi.
    Там в демосе CubeMan3D используется модуль Execute.CrossGL.pas с реализацией кросс-платформенного 
    контекста для Windows, MacOSX, Android и Linux.
    Также в проекте VXScene (https://sourceforge.net/p/glscene/code/HEAD/tree/branches/VXScene/Source/Basis/) 
    подключен модуль VKS.OpenGLFMX для работы 
    с OpenGL в FireMonkey под Win32/Win64.
  5. Like
    Pavel Vasilev получил реакцию от Rusland в Компонент TLang   
    Да, теперь всё работает и в рантайме. Не нашел Autotranslate  в инспекторе в свойствах меню, а могли бы туда и добавить, чтобы не писать в коде лишнего.
    Тест исправлен.  
    TestTLang_Menu.rar
  6. Like
    Pavel Vasilev отреагировална Brovin Yaroslav в Есть ли в fmx класс TImageList?   
    На данный момент (до версии RAD Studio XE5) FireMonkey не имеет компонент TImageList.
    Однако, для хранения графических ресурсов отлично подходит TStyleBook. Общая идея сводится к добавлению именованных графических ресурсов в TStyleBook в контейнере TImage. Затем мы каждому TImage задаем имя через StyleName. И затем в нашем коде уже по строковому идентификатору достаем нужную картинку.
     
    Рассмотрим теперь это на практике.
    Создадим приложение, которое будет вытаскивать картинку по имени из TStyleBook и отображать его в контейнере TImage.
     
    1. Создаем TStyleBook. Перетаскиваем его палитры компонентов (Tool Palette) в дизайнере на форму. Так же на форме я разметил кнопку и TImage для отображения выбранного изображения.

     
    2. Открываем дизайнер стилей и добавляем компонент TImage, путем перетаскивания TImage в корень Structure Panel (панель с деревом компонентов формы).

     
    3. В TImage загружаем картинку и называем картинку через TImage.StyleName. В моем случае изображение андроида и название  - 'android'. 


     
    4. Обратите внимание, что RAD Studio XE5 поддерживает картинки разного dpi для четкой отображения на экранах с разными dpi и Экранным масштабом (Scale). На рисунке выше, я загрузил два разрешения картинки, для обычных экранов, и экранов с удвоенной плотностью пикселей. Это актуально для мобильных платформ и OSX с экранами ретина.
     
    5. Пишем метод, который вытащить картинку по имени:
    function TForm4.GetImage(const AImageName: string): TBitmap; var StyleObject: TFmxObject; Image: TImage; begin StyleObject := ImageBook.Style.FindStyleResource(AImageName); if (StyleObject <> nil) and (StyleObject is TImage) then begin Image := StyleObject as TImage; Result := Image.Bitmap; end else Result := nil; end; Каждый объект FireMonkey TFmxObject предоставляет способ для поиска среди дочерних объектов объект с указанными именем StyleLookup. Доступ к корню всех стилей в StyleBook  является свойство TStyleBook.Style. Далее ищем у корня стиль с нужным именем картинки. Если стиля нету, то метод вернет nil. Иначе проверяем, что стиль есть и он экземпляр контейнера TImage. Далее просто выбираем картинку через свойство Bitmap.
     
    6. Вытаскиваем картинку и отображаем ее в TImage на форме.
    procedure TForm4.Button1Click(Sender: TObject); var Bitmap: TBitmap; begin Bitmap := GetImage('android'); if Bitmap <> nil then Image1.Bitmap.Assign(Bitmap); end; Вот в принципе и вся идея. Эту идею можно обобщить, сделав отдельный компонент с быстрой загрузкой картинок. Но это уже практика.
     
    Пример можно скачать тут: ImageBook.zip
×
×
  • Создать...