Вячеслав
Пользователи-
Постов
127 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Весь контент Вячеслав
-
Гениально, спасибо!
-
Добрый день, форумчане! Столкнулся со следующей задачей: Имеется TListBox с 32 итемами, задаются в DesignTime. В некоторых ситуациях требуется убрать половину, оставить только первые 16 итемов. Я делаю лишние невидимыми, но при этом область прокрутки листбокса остается прежней и излишне большой. В связи с этим вопрос: можно ли как-то ограничить область прокрутки? XE7, Windows.
-
Ну в этом плане конечно это крайне удобный и не трудоемкий вариант.
-
Ну это Вы махнули, никакой уникальности у ID вичестера нет. Меняется этот номер программно на раз, поэтому любому молодому "хакеру" только и нужно будет узнать правильный ID, что тоже очень просто.
-
Я возможно сейчас фигню напишу, палками не бейте. Под андроид не разрабатываю, но вот на винде вопрос общения через порт вставал неоднократно. И там это решалось либо через виртуальный com порт (драйвер от Microsoft), либо напрямую через драйвер производителя USB->UART микросхемы. Второй способ оказался куда приятнее. К примеру, берём популярную ft232. На их сайте http://www.ftdichip.com/Support/SoftwareExamples/CodeExamples.htm в разделе для Delphi есть удобный Unit-обертка всех библиотечных функций и примеры. Также есть очень толковый мануал. Этот метод даёт куда больше возможностей для разработчика, начиная от большей стабильности работы, заканчивая различными бонусами в виде работы с памятью микросхемы, реализацией I2C, SPI и тд. К чему это я все? Просто нашёл на их сайте страницу про Андроид: http://www.ftdichip.com/Android.htm Если FTDI подошли к делу на андройде так же, как и на винде, то это может оказаться полезным.
-
Было: http://fire-monkey.ru/topic/1560-com-port-firemonkey/
-
Нормального решения пока нет. Либо выносите элементы управления за пределы TMediaPlayerControl, либо создавайте над ним еще одну форму, на которой будут находится другие кликабельные компоненты.
-
Память на утечки проверяете при закрытии программы? Помните, что в FMX анимации в цикле достаточно сильно нагружают процессор даже в том случае, если форма с анимацией в данный момент не показана (ой сколько я с этим эффектом намучился в свое время).
-
Все, окончательно осознал механизм работы, теперь все стало на свои места. Все дело в том, что моя камера выдает данные в формате AARRGGBB, только вот значение старших двух бит равно $00, а не $FF. Поэтому картинка и воспринимается прозрачной для TImage. В итоге пробежался в цикле по памяти, поменял нули на $FF и все заработало.
-
Большое спасибо, этот метод работает, многое стало ясно. Правда, для меня это все равно не решение, т.к. в случае создания дополнительного потока только для пересохранения изображения в другом формате я получаю абсолютно такую же реализацию, как и с применением WinAPI и Vcl.Graphics.TBitmap. А это будет влиять на производительность, что в моем случае критично. Поэтому у меня такой вопрос: нельзя ли заставить TImage сразу воспринимать изображение в формате BMP?
-
А если дополнительную форму над Webbrowser-ом создать, тоже не перекроет? Я просто только под Win пишу, не знаю тонкостей.
-
Что-то не то у меня с выводом в 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
-
Не помогло. Странно, уже много вариантов перепробовал. В файл картинка сохраняется нормально. Пытаюсь сохранить в поток и загрузить потом из потока - не работает. Такое ощущение, что на этапе сохранения в файл изображение проходит через процедуру дополнительной проверки и каким-то образом преобразуется. Но что именно происходит, отследить не получается даже под дебагом.
-
Почти заработало. Вот код: 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; Может, при создании битмапа нужно указывать какие-либо дополнительные атрибуты?
-
Спасибо за ответы! Заглянул в исходники, в assign(bitmapSurface) тоже в конечном итоге все через Map/Unmap, плюс я не понял, как моему экземпляру TBitmapSurface задать значение Bits (свойство только для чтения, поле FBits недоступно, что и понятно). Еще поковыряюсь, чувствую, что уже скоро получу адекватный результат.
-
Нужно именно готовое решение? Я бы не заморачивался и написал под себя нужную реализацию через какой-нибудь TRectangle с анимацией. Работы на пол часа, зато все будет именно так, как вам хочется.
-
[Win] [FMX] Создать Bitmap, имея в памяти массив Byte
Вячеслав опубликовал вопрос в Доступ к пикселям
Всем добрый день! Написал я тут для своих нужд на Делфи оболочку для работы с SDK для камер PSEye. Примеры были на C++ и С#. Почти все работает, подключает несколько камер, 60fps при VGA-разрешении выдает влёгкую. Но реализацию пришлось делать через VCL.Graphics.TBitmap, а не через фаирманковский. Отчего VCL проект работает шустрее, чем FMX. Данные с камеры я получаю в виде области памяти, имею указатель на начало и размер области (массив Byte, грубо говоря). В VCL получение битмапа реализовал через WinAPI функцию GetDIBits, создав предварительно свой заголовок (TBITMAPINFOHEADER). Хотелось бы узнать, можно ли в FMX как-то напрямую работать с памятью, занимаемой изображением? Где почитать про структуру FMX.Graphics.TBitmap? -
Поиграйтесь с настройками типа анимации, если не ошибаюсь, In, Out, InOut. Ну и еще крайне важно не слишком сильно забивать приложение всяческими свистоперделками, эффектами, которые нагружают основной поток при отрисовке. Можно также FrameRate изменить, но мне это в свое время не помогло. А вообще FM, к сожалению, хреново оптимизирована под подобные задачи. Особенно удручает тот факт, что все визуальные компоненты всегда отрисовываются, независимо от того, находятся ли они поверх остальных или перекрыты. Поэтому старайтесь сперва делать в интерфейсе минимум, а потом уже расширяйтесь.
-
Отписался по данной теме на форуме по ESP8266, выложил исходники.
-
Кнопка не растягивается по высоте панели, правильно? А то не очень понятно. Вы бы хоть скриншотик приложили.