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

Лидеры

  1. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      19

    • Постов

      2 517


  2. Pax Beach

    Pax Beach

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


    • Баллы

      10

    • Постов

      414


  3. Rusland

    Rusland

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


    • Баллы

      6

    • Постов

      1 204


  4. Kitty

    Kitty

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


    • Баллы

      4

    • Постов

      792


Популярный контент

Показан контент с высокой репутацией 20.10.2016 во всех областях

  1. Я знал, что вы спросите ) Еще разбираюсь с некоторыми параметрами. Пусть побудет интрига, часа через 4 закончу с делами, создам отдельный топик по этому поводу, все расскажу. UPD: Собственно, если не терпится узнать, все написано здесь.
    4 балла
  2. 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);
    3 балла
  3. 1) чат не создавался как решение проблемных вопросов, мы всегда отправляем на форум, если тема достойна огласки 2) чат создан чтобы объединить разработчиков FMX, т.к. неформальное общение на форуме не поощряется 3) в чате решаются проблемы одной строкой 4) рассуждения что такое "хорошо", что такое "плохо" 5) с помощью чата решено не мало вопросов (от себя, спасибо активным участникам чата в тестировании) мы никому насильно не навязываем, кому интересно такая атмосфера они уже с нами
    2 балла
  4. procedure TForm5.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap); var aBitmap: TBitmap; aRectF: TRectF; begin aBitmap := TBitmap.Create; aBitmap.SetSize(Image.Width, Image.Height); aBitmap.CopyFromBitmap(Image); aBitmap.Canvas.BeginScene; aRectF := RectF(aBitmap.Width - Image2.Bitmap.Width, aBitmap.Height - Image2.Bitmap.Height, aBitmap.Width, aBitmap.Height); aBitmap.Canvas.DrawBitmap(Image2.Bitmap, Image2.Bitmap.BoundsF, aRectF, 1, true); aBitmap.Canvas.EndScene; Image1.Bitmap.Assign(aBitmap); aBitmap.Free; end; Kitty void __fastcall TFormCamera::TakePhotoFromCameraAction1DidFinishTaking(TBitmap *Image) { //умный указатель чтобы не использовать delete std::unique_ptr<TBitmap> aBitmap(new TBitmap()); TRectF aRectF; aBitmap->SetSize(Image->Width, Image->Height); aBitmap->CopyFromBitmap(Image); aBitmap->Canvas->BeginScene(); aRectF = RectF(aBitmap->Width - Form1->Image1->Bitmap->Width, aBitmap->Height - Form1->Image1->Bitmap->Height, aBitmap->Width, aBitmap->Height); aBitmap->Canvas->DrawBitmap(Form1->Image1->Bitmap, Form1->Image1->Bitmap->BoundsF, aRectF, 1, true); aBitmap->Canvas->EndScene(); Image1->Bitmap->Assign(aBitmap.get()); //сохранить в галерею _di_IFMXPhotoLibrary Service; if (TPlatformServices::Current->SupportsPlatformService(__uuidof(IFMXPhotoLibrary), &Service)) { Service->AddImageToSavedPhotosAlbum(Image1->Bitmap); } } Image1 - TImage с конечным результатом Image2 - с логотипом
    2 балла
  5. Vitaldj

    Развертка на Mac

    Не придерайся)))) Главное все поняли!
    2 балла
  6. А что именно интересует? Я сделал тестовое приложение Android — пишет голос и видео, двумя вариантами камерой телефона и нативным MediaRecorder, без торможения и с хорошим FPS. Пробую сейчас в сервис это запихать )
    2 балла
  7. Rusland

    Видео из картинок

    Вот пример Осипова c BitmapListAnimation... но у меня почему-то картинка едет в сторону при анимации. Может кто-нибудь сможет разобраться в чем причина?
    2 балла
  8. Нет смысла спрашивать у человека, который задал единственный вопрос на форме и больше не появлялся ) Хотя меня тоже интересует тема записи видео в Android
    2 балла
  9. модули Jpeg, PngImg (для gif не помню как называется), там есть нужные классы
    2 балла
  10. TBitmap это общий класс для работы с картинками, он всеядный Это не VCL где нужно подбирать класс под расширение файла
    2 балла
  11. dnekrasov

    Таймер в сервисе

    В архиве - простенький проект. Протестирован на Win и OSX. TimerThreadDemo.zip
    2 балла
  12. dnekrasov

    Таймер в сервисе

    Когда-то, лет 5 назад у меня возникла такая-же проблема, только в Win32-сервисе. Тогда, для её решения, я написал 2 простеньких класса. Вот код, может пригодится? unit Utils.TimerThread; interface uses System.Classes, System.SysUtils, System.SyncObjs; type TCustomTimerThread = class abstract (TThread) private FLock: TCriticalSection; FCancelledEvent: TSimpleEvent; FInterval: Integer; FOnTimer: TNotifyEvent; function GetInterval: Integer; function GetOnTimer: TNotifyEvent; procedure SetInterval(const Value: Integer); procedure SetOnTimer(const Value: TNotifyEvent); protected procedure Lock; procedure Unlock; procedure Sleep(AInterval: Integer); reintroduce; procedure TerminatedSet; override; procedure DoOnTimer; virtual; public constructor Create(AInterval: Integer; AOnTimer: TNotifyEvent); reintroduce; procedure BeforeDestruction; override; procedure Cancel; virtual; property Interval: Integer read GetInterval write SetInterval; /// <summary> /// <para> /// За синхронизацией потоков отвечает поток в котором обрабатывается OnTimer /// </para> /// <para> /// !!! НЕ ЗАБЫВАТЬ ПРО ЭТО !!! /// </para> /// </summary> property OnTimer: TNotifyEvent read GetOnTimer write SetOnTimer; end; /// <summary> /// Simple wait thread /// </summary> /// <remarks> /// <para> /// !!! Important !!! /// </para> /// <para> /// Use Cancel instead of Terminate. You can get ThreadExternalTerminate /// exception in multi-thread applications /// </para> /// </remarks> TWaitThread = class(TCustomTimerThread) protected procedure Execute; override; public end; /// <summary> /// Thread independed timer /// </summary> /// <remarks> /// <para> /// !!! Important !!! /// </para> /// <para> /// Use Cancel instead of Terminate. You can get ThreadExternalTerminate /// exception in multi-thread applications /// </para> /// </remarks> TTimerThread = class(TCustomTimerThread) private FEnabled: Boolean; function GetEnabled: Boolean; procedure SetEnabled(const Value: Boolean); protected procedure Execute; override; public constructor Create(AInterval: Integer; AOnTimer: TNotifyEvent; AEnabled: Boolean = True); reintroduce; property Enabled: Boolean read GetEnabled write SetEnabled; end; implementation { TCustomTimerThread } procedure TCustomTimerThread.BeforeDestruction; begin FLock.Free; FreeAndNil(FCancelledEvent); inherited; end; constructor TCustomTimerThread.Create(AInterval: Integer; AOnTimer: TNotifyEvent); begin inherited Create; FInterval := AInterval; FOnTimer := AOnTimer; FreeOnTerminate := True; FLock := TCriticalSection.Create; FCancelledEvent := TSimpleEvent.Create; FCancelledEvent.ResetEvent; end; procedure TCustomTimerThread.Cancel; begin FCancelledEvent.SetEvent; end; procedure TCustomTimerThread.DoOnTimer; begin if Assigned(OnTimer) then OnTimer(Self); end; function TCustomTimerThread.GetInterval: Integer; begin Lock; try Result := FInterval; finally Unlock; end; end; function TCustomTimerThread.GetOnTimer: TNotifyEvent; begin Lock; try Result := FOnTimer; finally Unlock; end; end; procedure TCustomTimerThread.Lock; begin FLock.Enter; end; procedure TCustomTimerThread.SetInterval(const Value: Integer); begin Lock; try FInterval := Value; finally Unlock; end; end; procedure TCustomTimerThread.SetOnTimer(const Value: TNotifyEvent); begin Lock; try FOnTimer := Value; finally Unlock; end; end; procedure TCustomTimerThread.Sleep(AInterval: Integer); begin FCancelledEvent.WaitFor(AInterval); end; procedure TCustomTimerThread.TerminatedSet; begin inherited; FCancelledEvent.SetEvent; end; procedure TCustomTimerThread.Unlock; begin FLock.Leave; end; { TWaitThread } procedure TWaitThread.Execute; begin if FCancelledEvent.WaitFor(FInterval) = wrTimeout then DoOnTimer; end; { TTimerThread } constructor TTimerThread.Create(AInterval: Integer; AOnTimer: TNotifyEvent; AEnabled: Boolean); begin inherited Create(AInterval, AOnTimer); FOnTimer := AOnTimer; FEnabled := AEnabled; end; procedure TTimerThread.Execute; begin while not Terminated do case FCancelledEvent.WaitFor(FInterval) of wrTimeout: begin if Enabled then DoOnTimer; end; else Break; end; end; function TTimerThread.GetEnabled: Boolean; begin Lock; try Result := FEnabled; finally Unlock; end; end; procedure TTimerThread.SetEnabled(const Value: Boolean); begin Lock; try FEnabled := Value; finally Unlock; end; end; end.
    2 балла
  13. zairkz

    Fire-Monkey в Telegram

    Создана группа для знакомства и общения разработчиков, использующих инструменты Fire-Monkey. Небольшой свод правил в группе Fire-Monkey: - Не стоит описывать проблему, скрины и тд. не изучив необходимую литературу и форум, если решения все-таки нет, необходимо создать тему на форуме fire-monkey.ru и скинуть в группу ссылку; - необходимо учитывать часовые пояса, в случае если на тему в Форуме долго нет ответа; - можно постить новости IT-рынка связанных с Fire-Monkey и RAD-studio, iOS и Android; - «баяны», «мемы» и приколы касательно тематике чата приветствуются, желательно в небольшом количестве; - скриншоты и описание программ написанных на Fire-Monkey тоже приветствуются; - будьте вежливыми, ведь вежливость – это утонченность речи, благопристойность манер и поведения; Запрещено: - запрещено задавать элементарные вопросы касательно разработки, для этого есть куча литературы; - запрещены сообщения с большим описание проблемы и кода, для этого есть всем известный форум; - навязчивая реклама компании\приложения в чате под запретом; - оскорбления в адрес участников и в адрес Embarcadero запрещены; - запрещены спам, порнография и подобная грязь; @fire_monkey в Telegram
    1 балл
  14. увы не пользуюсь вайбером, не могу проестировать...
    1 балл
  15. ShowShareSheetAction1->Bitmap->Assign(Image1->Bitmap);
    1 балл
  16. да правильно, вот так короче Image1->Bitmap->SetSize(aBitmap->Width, aBitmap->Height); зачем использовать разные методы для IOS/Android?
    1 балл
  17. Значит правильно так Image1->Bitmap->Width = aBitmap->Width; Image1->Bitmap->Height = aBitmap->Height; Image1->Bitmap->CopyFromBitmap(aBitmap.get()); А в iOS можно оставить Image1->Bitmap->Assign(aBitmap.get()); там логотип не пропадает при переводе в фон. Все правильно?
    1 балл
  18. такое поведение когда используется Assign, поэтому везде нужно заменить на CopyFromBitmap (не забываем что там используется копирование один-в-один, т.е. размеры должны быть одинаковы у обоих Bitmap'ов)
    1 балл
  19. Попробуйте выставить MaxHeight, MaxWidth больше в экшене
    1 балл
  20. да поведение подтвердилось, от параметра NeedSaveToAlbum никак не зависит
    1 балл
  21. Правильно ли поведение на андроиде - фотография без логотипа падает в папку Камера и в этой папке это фотография без логотипа. Одновременно с этим фотография попадает в паку Saved Photos и как положено с логотипом на фото. Т.е. на андроиде мы имеем фото в двух местах? void __fastcall TFormCamera::TakePhotoFromCameraAction1DidFinishTaking(TBitmap *Image) { //умный указатель чтобы не использовать delete std::unique_ptr<TBitmap> aBitmap(new TBitmap()); TRectF aRectF; aBitmap->SetSize(Image->Width, Image->Height); aBitmap->CopyFromBitmap(Image); aBitmap->Canvas->BeginScene(); aRectF = RectF(aBitmap->Width - Form1->Image1->Bitmap->Width, aBitmap->Height - Form1->Image1->Bitmap->Height, aBitmap->Width, aBitmap->Height); aBitmap->Canvas->DrawBitmap(Form1->Image1->Bitmap, Form1->Image1->Bitmap->BoundsF, aRectF, 1, true); aBitmap->Canvas->EndScene(); Image1->Bitmap->Assign(aBitmap.get()); //сохранить в галерею _di_IFMXPhotoLibrary Service; if (TPlatformServices::Current->SupportsPlatformService(__uuidof(IFMXPhotoLibrary), &Service)) { Service->AddImageToSavedPhotosAlbum(Image1->Bitmap); } }
    1 балл
  22. Вот он каменный цветок: _di_IFMXPhotoLibrary Service;
    1 балл
  23. kami

    Развертка на Mac

    Если XCode 8 (что, собственно, и должно было произойти при обновлении) то работать не будет. Для 8 хкода нужен 10.1 берлин
    1 балл
  24. объявили переменную? Service: IFMXPhotoLibrary
    1 балл
  25. Равиль Зарипов (ZuBy)

    Fire-Monkey в Telegram

    Почистил тему, т.к. был оффтоп Напоминаю: Присоединяйтесь к нашему ламповому чату в телеграм, обсуждаем много всего интересного.
    1 балл
  26. Равиль Зарипов (ZuBy)

    Развертка на Mac

    покажите скрин Tools-Options-SDK Manager
    1 балл
  27. все правильно. сохраняется оригинальный файл, который приходит параметром Image, а наложение уже идет после. можете поставить NeedSaveToAlbum=false и сами сохранить картинку в галерее P.S. только как сохранять в IOS я незнаю. нужно смотреть исходники
    1 балл
  28. Alex7wrt

    Видео из картинок

    Подозреваю, что это связано с тем, что картинка размером 1317*66, а должна быть 1320*66 (20*66=1320). Проверил свою серию изображений в вашей программе, где размеры совпадают - воспроизвелось нормально.
    1 балл
  29. Так и должно быть, sql сервер не знает что вы собираетесь хранить в таблице, какой язык именно будет использоваться для хранения, сортировки и т.п. Вы должны сами указать sql серверу как он должен обращаться с текстом. Для этого есть свойства Collation (ну и Character Set), обычно установить эти свойства можно глобально для сервера или конкретно для базы или таблицы. К сожалению не имел опыта работы именно с SQLite, но принцип везде один. При изменении этих свойств для наполненной данными таблицы будьте осторожны, с большой вероятностью русский язык переколбасит, так что сделайте бэкап. Параметры можно установить конкретно для языка, к примеру "CharacterSet=cp1251 -- Windows Cyrillic" "Collation=cp1251_general_ci", или более универсально "CharacterSet=utf8 -- UTF8 Unicode" "Collation=utf8_general_ci" - русский язык должен работать корректно.
    1 балл
  30. Rusland

    Развертка на Mac

    Ох уж этот почерк медиков))
    1 балл
  31. Не надо вообще таймер делать для этого. И вообще, никогда таймеры не надо делать, когда можно без них обойтись. Вам в данной задаче надо работать по событиям. Каждый раз, когда пользователь сделал изменение в стринглисте, вы проверяете, прошло ли с момента последней отправки 15 секунд, а можно и без проверки. Далее вызов startService, с переданными в метод текстом. Сервис стартует с командой отправить переданный текст, отправляет его. Для этой задачи я бы использовал IntentService, а не LocalService — соответственно не startService, а bindService.
    1 балл
  32. Local-сервис для этого вполне подходит, главное сделать его перезапускаемым (Sticky). В разделе Сервис уже довольно много примеров, стоит их посмотреть. К сожалению, заряд батареи действительно будет быстро таять. Может не стоит так часто дергать сеть? PS. С помощью монитора отслеживайте, выводя лог, или с помощью дебага действительно ли ваш сервис нормально запускается и работает (с TTimer точно не работает).
    1 балл
  33. Так есть же пример выше
    1 балл
  34. Pax Beach

    Seattle Android Ошибка exited with code 1

    Как понять «нашел»? А Android Tools не дает скачать нужную версию SDK?
    1 балл
  35. 1 балл
  36. Error

    Когда много таймеров

    Это некий вспомогательный класс, к примеру TEventManager, который хранит список событий в формате <СсылкаНаОбработчик, НеобходимаяЗадержкаПередВызовом>, Внутри класса молотит 1 таймер, обработчик которого проходит по списку и смотрит какие события необходимо вызвать и удалить из списка, или не удалять если нужна периодичность, а просто перенести НеобходимаяЗадержкаПередВызовом вперед. Когда нам надо создать событие мы делаем что-то типо EventManager.Add(OnAnoterTimer, 100);
    1 балл
  37. Не обратил внимание на андроид... Проверю позже.
    1 балл
  38. На форуме уже обсуждалась подобная проблема: Зависимость от регистра русских символов при использовании LIKE
    1 балл
  39. Вот пример, в котором реализованы ваши задачи.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...