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

Вячеслав

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

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

  • Посещение

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

    3

Весь контент Вячеслав

  1. Добрый день, форумчане! Столкнулся со следующей задачей: Имеется TListBox с 32 итемами, задаются в DesignTime. В некоторых ситуациях требуется убрать половину, оставить только первые 16 итемов. Я делаю лишние невидимыми, но при этом область прокрутки листбокса остается прежней и излишне большой. В связи с этим вопрос: можно ли как-то ограничить область прокрутки? XE7, Windows.
  2. Я бился над этим в своё время, в итоге забил и сделал просто кликабельную панель сбоку от этого компонента.
  3. Ну в этом плане конечно это крайне удобный и не трудоемкий вариант.
  4. Ну это Вы махнули, никакой уникальности у ID вичестера нет. Меняется этот номер программно на раз, поэтому любому молодому "хакеру" только и нужно будет узнать правильный ID, что тоже очень просто.
  5. Вячеслав

    Serial port

    Я возможно сейчас фигню напишу, палками не бейте. Под андроид не разрабатываю, но вот на винде вопрос общения через порт вставал неоднократно. И там это решалось либо через виртуальный com порт (драйвер от Microsoft), либо напрямую через драйвер производителя USB->UART микросхемы. Второй способ оказался куда приятнее. К примеру, берём популярную ft232. На их сайте http://www.ftdichip.com/Support/SoftwareExamples/CodeExamples.htm в разделе для Delphi есть удобный Unit-обертка всех библиотечных функций и примеры. Также есть очень толковый мануал. Этот метод даёт куда больше возможностей для разработчика, начиная от большей стабильности работы, заканчивая различными бонусами в виде работы с памятью микросхемы, реализацией I2C, SPI и тд. К чему это я все? Просто нашёл на их сайте страницу про Андроид: http://www.ftdichip.com/Android.htm Если FTDI подошли к делу на андройде так же, как и на винде, то это может оказаться полезным.
  6. Вячеслав

    Serial port

    Было: http://fire-monkey.ru/topic/1560-com-port-firemonkey/
  7. Нормального решения пока нет. Либо выносите элементы управления за пределы TMediaPlayerControl, либо создавайте над ним еще одну форму, на которой будут находится другие кликабельные компоненты.
  8. Память на утечки проверяете при закрытии программы? Помните, что в FMX анимации в цикле достаточно сильно нагружают процессор даже в том случае, если форма с анимацией в данный момент не показана (ой сколько я с этим эффектом намучился в свое время).
  9. Все, окончательно осознал механизм работы, теперь все стало на свои места. Все дело в том, что моя камера выдает данные в формате AARRGGBB, только вот значение старших двух бит равно $00, а не $FF. Поэтому картинка и воспринимается прозрачной для TImage. В итоге пробежался в цикле по памяти, поменял нули на $FF и все заработало.
  10. Большое спасибо, этот метод работает, многое стало ясно. Правда, для меня это все равно не решение, т.к. в случае создания дополнительного потока только для пересохранения изображения в другом формате я получаю абсолютно такую же реализацию, как и с применением WinAPI и Vcl.Graphics.TBitmap. А это будет влиять на производительность, что в моем случае критично. Поэтому у меня такой вопрос: нельзя ли заставить TImage сразу воспринимать изображение в формате BMP?
  11. А если дополнительную форму над Webbrowser-ом создать, тоже не перекроет? Я просто только под Win пишу, не знаю тонкостей.
  12. При этом после команды Image1.Bitmap.Assign(bmp); выводится следующее (вырезал ножницами Windows):
  13. Что-то не то у меня с выводом в Image, возможно какие-то проблемы с PixelFormat. Попытался отвязаться от камеры и заполнить данные изображения каким-либо незамысловатым образом: function TCamPSEye.GetFMXBitmap: FMX.Graphics.TBitmap; var bitdata: TBitmapData; i, j: Integer; begin Result := FMX.Graphics.TBitmap.Create; Result.SetSize(640, 480); if (Result.Map(TMapAccess.Write, bitdata)) then try for I := 0 to 640 - 1 do for j := 0 to 480 - 1 do begin bitdata.SetPixel(i, j, i * j); end; finally Result.Unmap(bitdata); end; end; Полученный битмап сохраняю на диск, получаю хорошую красивую картинку: test3FMX.bmp
  14. Не помогло. Странно, уже много вариантов перепробовал. В файл картинка сохраняется нормально. Пытаюсь сохранить в поток и загрузить потом из потока - не работает. Такое ощущение, что на этапе сохранения в файл изображение проходит через процедуру дополнительной проверки и каким-то образом преобразуется. Но что именно происходит, отследить не получается даже под дебагом.
  15. Почти заработало. Вот код: function TCamPSEye.GetFMXBitmap: FMX.Graphics.TBitmap; var bitdata: TBitmapData; begin if not CLEyeCameraGetFrame(fInstance, fData, 750) then begin raise Exception.Create('Can not get image data'); Exit; end; Result := FMX.Graphics.TBitmap.Create; Result.SetSize(Resolution.X, Resolution.Y); //Result. if (Result.Map(TMapAccess.Write, bitdata)) then try Move(fData^, bitdata.Data^, Resolution.X * Resolution.Y * 4) finally Result.Unmap(bitdata); end; end; На выходе получается битмап с данными камеры, который прекрасно сохраняется на диск. А вот в TImage почему-то я его вывести не могу, появляется белая картинка. Вывожу так: procedure TFormMulticam.Button1Click(Sender: TObject); var bmp: FMX.Graphics.TBitmap; begin bmp := GCameraArray[0].GetFMXBitmap; bmp.SaveToFile('test2FMX.bmp'); Image1.Bitmap.Assign(bmp); bmp.Free; end; Может, при создании битмапа нужно указывать какие-либо дополнительные атрибуты?
  16. Спасибо за ответы! Заглянул в исходники, в assign(bitmapSurface) тоже в конечном итоге все через Map/Unmap, плюс я не понял, как моему экземпляру TBitmapSurface задать значение Bits (свойство только для чтения, поле FBits недоступно, что и понятно). Еще поковыряюсь, чувствую, что уже скоро получу адекватный результат.
  17. Нужно именно готовое решение? Я бы не заморачивался и написал под себя нужную реализацию через какой-нибудь TRectangle с анимацией. Работы на пол часа, зато все будет именно так, как вам хочется.
  18. Всем добрый день! Написал я тут для своих нужд на Делфи оболочку для работы с SDK для камер PSEye. Примеры были на C++ и С#. Почти все работает, подключает несколько камер, 60fps при VGA-разрешении выдает влёгкую. Но реализацию пришлось делать через VCL.Graphics.TBitmap, а не через фаирманковский. Отчего VCL проект работает шустрее, чем FMX. Данные с камеры я получаю в виде области памяти, имею указатель на начало и размер области (массив Byte, грубо говоря). В VCL получение битмапа реализовал через WinAPI функцию GetDIBits, создав предварительно свой заголовок (TBITMAPINFOHEADER). Хотелось бы узнать, можно ли в FMX как-то напрямую работать с памятью, занимаемой изображением? Где почитать про структуру FMX.Graphics.TBitmap?
  19. Поиграйтесь с настройками типа анимации, если не ошибаюсь, In, Out, InOut. Ну и еще крайне важно не слишком сильно забивать приложение всяческими свистоперделками, эффектами, которые нагружают основной поток при отрисовке. Можно также FrameRate изменить, но мне это в свое время не помогло. А вообще FM, к сожалению, хреново оптимизирована под подобные задачи. Особенно удручает тот факт, что все визуальные компоненты всегда отрисовываются, независимо от того, находятся ли они поверх остальных или перекрыты. Поэтому старайтесь сперва делать в интерфейсе минимум, а потом уже расширяйтесь.
  20. Свой код у меня пока нет возможности выложить, попробуйте пока с данной темой ознакомиться: [TidTCPServer] [TidTCPClient] Как отправить файл с сервера на клиент используя Indy10 и получить файл на стороне клиента?
  21. Нет, можно броадкастить своим клиентам, было на форумах. Но ваш вариант тоже вполне работоспособен.
  22. Отписался по данной теме на форуме по ESP8266, выложил исходники.
  23. Кнопка не растягивается по высоте панели, правильно? А то не очень понятно. Вы бы хоть скриншотик приложили.
×
×
  • Создать...