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

Rusland

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

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

  • Посещение

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

    26

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

  1. Like
    Rusland отреагировална Error в Небольшой обмен опытом. О размере текста, TTextLaout.   
    *** Небольшой обмен опытом ***
    Вижу что вопросы о размере текста довольно частые, поделюсь своими наработками.
    function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF;
    Функция для расчета размера прямоугольника, занимаемого однострочным текстом.
    Параметры:
    Text - Текст Font - Шрифт с которым будет выводиться текст Size - если 0, то Font.Size будет использоваться из Font, иначе из данного параметра Исходный код:
    uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; function CalcTextSize(Text: string; Font: TFont; Size: Single = 0): TSizeF; var TextLayout: TTextLayout; begin TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.Text := Text; TextLayout.MaxSize := TPointF.Create(9999, 9999); TextLayout.Font.Assign(Font); if not SameValue(0, Size) then begin TextLayout.Font.Size := Size; end; TextLayout.WordWrap := False; TextLayout.Trimming := TTextTrimming.None; TextLayout.HorizontalAlign := TTextAlign.Leading; TextLayout.VerticalAlign := TTextAlign.Leading; finally TextLayout.EndUpdate; end; Result.Width := TextLayout.Width; Result.Height := TextLayout.Height; finally TextLayout.Free; end; end;   function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer;
    Функция возвращающая максимально возможный размер шрифта, для текста вписанного в заданный прямоугольник.
    Параметры:
    Text - Текст Font - Шрифт с которым будет выводиться текст Width, Height - Ширина и высота прямоугольника MaxFontSize - Максимально возможный размер шрифта Исходный код:
    uses System.Types, FMX.Types, FMX.Graphics, FMX.TextLayout, System.Math, System.SysUtils; const cMaxFontSize = 512; function FontSizeForBox(Text: string; Font: TFont; Width, Height: Single; MaxFontSize: Single = cMaxFontSize): Integer; var Size, Max, Min, MaxIterations: Integer; Current: TSizeF; begin Max := Trunc(MaxFontSize); Min := 0; MaxIterations := 20; repeat Size := (Max + Min) div 2; Current := CalcTextSize(Text, Font, Size); if ((Abs(Width - Current.Width) < 1) and (Width >= Current.Width)) and ((Abs(Height - Current.Height) < 1) and (Height >= Current.Height)) then break else if (Width < Current.Width) or (Height < Current.Height) then Max := Size else Min := Size; Dec(MaxIterations); until MaxIterations = 0; Result := Size; end; ---
    Также данные функции можно найти в этом юните
  2. Like
    Rusland отреагировална Pax Beach в [TJMediaRecorder] Запись видео в Android. Native и Intent   
    Интерфейс SurfaceView служит для этого.
     
  3. Like
    Rusland отреагировална Равиль Зарипов (ZuBy) в [TJMediaRecorder] Запись видео в Android. Native и Intent   
    вот так можно активировать фронтальную камеру VideoRecorder_front.zip
  4. Like
  5. Like
    Rusland отреагировална Pax Beach в [TJMediaRecorder] Запись видео в Android. Native и Intent   
    Обещал вам продемонстрировать возможность записи видео в Android.
    Представляю решение с исходными кодами (VideoRecord.zip) для изучения этой возможности и использования в своих проектах.
    На представленном снимке есть 2 главных кнопки: "Modal Intent Record" и "Native Record".

     
    Modal Intent Record — удобно использовать в приложениях, потому что запись ведется приложением камеры, поставляемым с телефоном. После съемки в приложение возвращается сообщение о результатах — удачно/неудачно.
    Native Record — метод на базе интерфейса JMediaRecorder, используется, когда Intent Record не подходит. Например в Local Android сервисе ;-)
    Пользуйтесь на здоровье.
     
    Большая просьба к сообществу — помочь в комментариях с подбором оптимальных параметров записи видео в JMediaRecorder. Установленные сейчас параметры 640х480, и качество видео хромает.
    Нужно научиться переключать камеры, менять степень сжатия, включать/выключать вспышку, звук затвора.
     
    Здесь люди уже подбирали варианты параметров, но нужно протестировать на приложении из RAD Studio.
    На ресурсе разработчиков Android тема по JMediaRecorder находится здесь.
     
  6. Like
  7. Like
    Rusland отреагировална Равиль Зарипов (ZuBy) в Fire-Monkey в Telegram   
    1) чат не создавался как решение проблемных вопросов, мы всегда отправляем на форум, если тема достойна огласки
    2) чат создан чтобы объединить разработчиков FMX, т.к. неформальное общение на форуме не поощряется
    3) в чате решаются проблемы одной строкой
    4) рассуждения что такое "хорошо", что такое "плохо"
    5) с помощью чата решено не мало вопросов (от себя, спасибо активным участникам чата в тестировании)
    мы никому насильно не навязываем, кому интересно такая атмосфера они уже с нами
  8. Like
  9. Like
    Rusland отреагировална Равиль Зарипов (ZuBy) в Fire-Monkey в Telegram   
    Почистил тему, т.к. был оффтоп
    Напоминаю: Присоединяйтесь к нашему ламповому чату в телеграм, обсуждаем много всего интересного.
  10. Like
    Rusland отреагировална zairkz в Fire-Monkey в Telegram   
    Создана группа для знакомства и общения разработчиков, использующих инструменты Fire-Monkey.
    Небольшой свод правил в группе Fire-Monkey:
    - Не стоит описывать проблему, скрины и тд. не изучив необходимую литературу и форум, если решения все-таки нет, необходимо создать тему на форуме fire-monkey.ru и скинуть в группу ссылку; 
    - необходимо учитывать часовые пояса, в случае если на тему в Форуме долго нет ответа;
    - можно постить новости IT-рынка связанных с Fire-Monkey и RAD-studio, iOS и Android;
    - «баяны», «мемы» и приколы касательно тематике чата приветствуются, желательно в небольшом количестве;
    - скриншоты и описание программ написанных на Fire-Monkey тоже приветствуются;
    - будьте вежливыми, ведь вежливость – это утонченность речи, благопристойность манер и поведения;
    Запрещено:
    - запрещено задавать элементарные вопросы касательно разработки, для этого есть куча литературы;
    - запрещены сообщения с большим описание проблемы и кода, для этого есть всем известный форум;
    - навязчивая реклама компании\приложения в чате под запретом;
    - оскорбления в адрес участников и в адрес Embarcadero запрещены;
    - запрещены спам, порнография и подобная грязь;
    @fire_monkey в Telegram
  11. Like
    Rusland отреагировална Alex7wrt в Видео из картинок   
    Подозреваю, что это связано с тем, что картинка размером 1317*66, а должна быть 1320*66 (20*66=1320). Проверил свою серию изображений в вашей программе, где размеры совпадают - воспроизвелось нормально.
  12. Like
    Rusland получил реакцию от Steepe_Hare в Видео из картинок   
    Вот пример Осипова c BitmapListAnimation... но у меня почему-то картинка едет в сторону при анимации. Может кто-нибудь сможет разобраться в чем причина?
  13. Like
    Rusland отреагировална Vitaldj в Развертка на Mac   
    Не придерайся)))) Главное все поняли!
  14. Like
    Rusland отреагировална Pax Beach в [TVideoCaptureDevice] Как оптимизировать скорость считывания данных с камеры?TVideoCaptureDevice   
    А что именно интересует?
    Я сделал тестовое приложение Android — пишет голос и видео, двумя вариантами камерой телефона и нативным MediaRecorder, без торможения и с хорошим FPS.
    Пробую сейчас в сервис это запихать )
     
  15. Like
    Rusland отреагировална Pax Beach в [TVideoCaptureDevice] Как оптимизировать скорость считывания данных с камеры?TVideoCaptureDevice   
    Я знал, что вы спросите )
    Еще разбираюсь с некоторыми параметрами.
    Пусть побудет интрига, часа через 4 закончу с делами, создам отдельный топик по этому поводу, все расскажу.
     
    UPD:
    Собственно, если не терпится узнать, все написано здесь.
  16. Like
    Rusland получил реакцию от Dinkin в Развертка на Mac   
    Ох уж этот почерк медиков))
  17. Like
    Rusland получил реакцию от Kitty в Видео из картинок   
    Вот пример Осипова c BitmapListAnimation... но у меня почему-то картинка едет в сторону при анимации. Может кто-нибудь сможет разобраться в чем причина?
  18. Like
    Rusland получил реакцию от AngryOwl в [TVideoCaptureDevice] Как оптимизировать скорость считывания данных с камеры?TVideoCaptureDevice   
    Нет смысла спрашивать у человека, который задал единственный вопрос на форме и больше не появлялся )
    Хотя меня тоже интересует тема записи видео в Android
  19. Like
    Rusland получил реакцию от Равиль Зарипов (ZuBy) в [TVideoCaptureDevice] Как оптимизировать скорость считывания данных с камеры?TVideoCaptureDevice   
    Нет смысла спрашивать у человека, который задал единственный вопрос на форме и больше не появлялся )
    Хотя меня тоже интересует тема записи видео в Android
  20. Like
    Rusland получил реакцию от Равиль Зарипов (ZuBy) в Отправка данных по http в фоновом режиме   
    Local-сервис для этого вполне подходит, главное сделать его перезапускаемым (Sticky). В разделе Сервис уже довольно много примеров, стоит их посмотреть. К сожалению, заряд батареи действительно будет быстро таять. Может не стоит так часто дергать сеть? 
    PS. С помощью монитора отслеживайте, выводя лог, или с помощью дебага действительно ли ваш сервис нормально запускается и работает (с TTimer точно не работает).
  21. Like
    Rusland отреагировална enatechno в TBitmap -> TJPEGImage и TgifImage   
    Для конвертации можете использовать TBitmapCodecManager. Например, так я его использую для сохранения файлов в различном формате:
     
    var aExtention, aFileName: string; aFileStream: TFileStream; aSaveParams: TBitmapCodecSaveParams; aSurf: TBitmapSurface; aBitmap: TBitmap ..... aFileStream := TFileStream.Create(aFileName, fmCreate); try aSurf := TBitmapSurface.Create(); try aSurf.Assign(aBitmap); aSaveParams.Quality := 70; TBitmapCodecManager.SaveToStream(aFileStream, aSurf, aExtention, @aSaveParams); finally FreeAndNil(aSurf); end; finally FreeAndNil(aFileStream); end; Для сохранения jpg использую aExtention='.jpg' и т.д.



    И почему Вы используете  TJPEGImage и TgifImage? Они разве есть в FMX? TImage.Bitmap читается из файла так:
     
    var aImage: TImage; aFileName: string; ... aImage.Bitmap.LoadFromFile(aFileName);  
  22. Like
    Rusland отреагировална Brovin Yaroslav в Возвращаясь к вопросу о подсчете высоты текста TListView   
    Вот пример вычисления высоты итема. ListViewVariableHeightItems2.zip
    Я этот пример показывал на лонче в питере.
  23. Like
    Rusland получил реакцию от Kitty в У меня не работает DrawBitmap   
    Ну все правильно. Картинка 70 на 70, часть картинки черная, а Rect с размерами TRectF.Create(50, 30, 120, 100);
  24. Like
    Rusland получил реакцию от Steepe_Hare в Благодраность   
    http://edu.fire-monkey.ru/landing/index.html
  25. Like
    Rusland получил реакцию от Равиль Зарипов (ZuBy) в анимация батарейки с управлением "уровня заряда"   
    Вот как можно получить уровень заряда.
    В Image меняйте картинку на соответствующую уровню заряда.
×
×
  • Создать...