-
Постов
394 -
Зарегистрирован
-
Посещение
-
Победитель дней
45
Активность репутации
-
AngryOwl получил реакцию от zonik в Как записать видео на Андроиде?
Вообще, конечно, собрать видео из отдельных кадров можно. Вполне реально. Но не для всего)
И это все "свистоперделки"...
Что касается частоты кадров - реально получать 10-15. Еще и от устройства зависит, от камеры и т.д. Но все эти тормоза из-за класса "обертки" работы с видео. Именно он выдает так мало кадров. Сама камера работает. FMX работает тоже ничего, но основные тормоза из-за того что в TCameraComponent уже "приходит" мало кадров.
На самом деле, как я считаю, разработка для мобильных платформ должна в первую очередь решать именно мультимедийные функции (я бы сказал, что это ОЧЕНЬ важно). А мы имеем пока-что их жалкое подобие, которое нужно допиливать ручками...
Я уже не говорю о том, что почему-то если в той же iOS что-то "запрещено", то это же касается и Android, хотя в ней все намного проще и она более "открыта". Глупо как-то, уж простите за откровенность...
-
AngryOwl отреагировална Alex7wrt в Как записать видео на Андроиде?
Да чего там )) Все точно подмечено. Напишу немного не в тему, тоже извините... Я вот удивляюсь, почему относительно несложные приложения на андроиде после установки на устройство занимают около 30 МБ, когда нативные могут и меньше мегабайта весить. Неоспоримый плюс FMX - возможность практически одним кодом писать для нескольких платформ, из-за чего страдает качество в каждом из них. Здесь однозначно есть к чему стремиться.
-
AngryOwl получил реакцию от zairkz в Как записать видео на Андроиде?
Вообще, конечно, собрать видео из отдельных кадров можно. Вполне реально. Но не для всего)
И это все "свистоперделки"...
Что касается частоты кадров - реально получать 10-15. Еще и от устройства зависит, от камеры и т.д. Но все эти тормоза из-за класса "обертки" работы с видео. Именно он выдает так мало кадров. Сама камера работает. FMX работает тоже ничего, но основные тормоза из-за того что в TCameraComponent уже "приходит" мало кадров.
На самом деле, как я считаю, разработка для мобильных платформ должна в первую очередь решать именно мультимедийные функции (я бы сказал, что это ОЧЕНЬ важно). А мы имеем пока-что их жалкое подобие, которое нужно допиливать ручками...
Я уже не говорю о том, что почему-то если в той же iOS что-то "запрещено", то это же касается и Android, хотя в ней все намного проще и она более "открыта". Глупо как-то, уж простите за откровенность...
-
AngryOwl отреагировална megajack991 в Как записать видео на Андроиде?
Уууу, как печально.. И неожиданно- как так, мобильная мультиплатформа и без видео.. Это же нереально- собирать видео из отдельных кадров..
-
AngryOwl отреагировална Равиль Зарипов (ZuBy) в RAD XE9 (RAD X Seattle)
Минусы
1. Баг с использованием старых стилей, ждём новые Premium Styles (спасает стандартные стили которые генерирует BitmapStyleDesigner)
2. TMultiView -> Drawer не перекрывает TMapView
3. Работа со стилями в рантайме через TStyleManager изменили
4. В старых проектах нужно удалять все uses'ы и дать среде самой сгенерировать uses'ы
Плюсы
1. Исправили TLocationSensor
2. TMapView новые фичи
3. Среда шустрей запускается
Пока все что заметил
-
AngryOwl получил реакцию от Freezer_86 в Как нарисовать круглый TImage
var BmpNew : TBitmap; begin BmpNew := TBitmap.Create; BmpNew.SetSize({нужный размер}, {нужный размер}); BmpNew.Canvas.BeginScene; try BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap; BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch; BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап}; BmpNew.Canvas.Clear(0); BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1); finally BmpNew.Canvas.EndScene; end; TImage{ваш объект}.Bitmap.Assign(BmpNew); end; думаю так
-
AngryOwl отреагировална Alex Bozhko в Самый простой способ работы с SQLite
Ну, FDGUIxWaitCursor1, FDPhysSQLiteDriverLink1 - один раз повесили рядом с FDConnection, настроили и забыли - не особая и проблема (за универсальность чем-то платить всегда приходится).
Query? Ну, используйте FDTable. Если ничего из ряда вон выходящего не нужно - будет прекрасно работать.
LiveBinding (BindSourceDB1 и т. д.) - тут все сложнее... Эта технология предназначена для замены TDataSource. Суть в чем? B VCL мы используем TDataSource, но при этом все контролы, работающие с источником данных, - специальные. DBGrid, DBComboBox и т.д. В обычный ComboBox, иначе как руками данные из источника не запихать.
Здесь же с помощью LiveBinding практически любой контрол можно связать с источником данных. Делается это в визуальном редакторе, а потом дотачивается руками. И не важно, какой набор компонентов доступа к данным вы используете (хоть FireDAC, хоть UniDAC. хоть Fib'ы). Если вы хотите "как VCL", то проблема не в FireDAC, проблема в отсутствии специальных контролов, для работы с данными. Единственная альтернатива LiveBinding сегодня - вытаскивать данные и "заполнять" контролы вручную (кстати, я так и делаю). Это не будет проще, но определенные преимущества есть.
-
AngryOwl отреагировална Denis Vasilyev в Серия статей, как настроить Android, OS X, iOS Simulator, iOS с RAD Studio (Delphi, C++ Builder)
Серия статей с пошаговой инструкцией, как подключить и настроить Android, OS X, iOS Simulator, iOS для работы с RAD Studio.
Как настроить Android и RAD Studio XE7 (Delphi, C++ Builder)
http://habrahabr.ru/company/delphi/blog/253929/
Как настроить Mac OS X, iOS-симулятор и RAD Studio XE8 (Delphi, C++ Builder)
http://habrahabr.ru/company/delphi/blog/255721/
Как настроить iOS-устройство и RAD Studio XE8 (Delphi, C++ Builder)
http://habrahabr.ru/company/delphi/blog/265313/
-
AngryOwl получил реакцию от sulion в Как программно отмасштабировать TImage
Если попроще, то я бы сделал так:
- один TListBox (с выравниванием либо Bottom, либо Client)
- с нужным количеством TListBixItem, соответственно кол-ву "фигур"
- у TListBox Columns = кол-ву TListBixItem, либо ListStyle = Horizontal
- ну и соответственно все настройки по высоте и т.п.
- TListBox.StyleLookup = 'transparentlistboxstyle'
- поместил бы в каждый TListBixItem по картинке (TImage) с выравниванием Bottom
и менял бы высоту этих картинок.......
З.Ы. Если Вам не нужно что-то более "красивое"
З.З.Ы. А можно сделать свой дополнительный стиль для TListBixItem, взяв за основу стандартный стиль и изменив в нем объект 'icon'. Тогда не нужен будет TImage для каждого TListBixItem, и можно будет управлять им через StylesData['icon.....']...
-
AngryOwl отреагировална Brovin Yaroslav в "Лишние" Items в отладчике?
Чтобы каждый раз при добавлении элемента не запрашивать память на 1 элемент, список растет на несколько элементов вперед. За это отвечает свойство Capacity. Таким образом скорость добавления элементов возрастает.
Да, но не смотря на это, пользователь работает только в границах от [0, Count -1]
-
AngryOwl отреагировална rareMax в "Лишние" Items в отладчике?
Частенько замечаю что в отладчике, для списков создаются лишние поля. На скрине видно что полей в списке 2, но отладчик добавил еще 2 лишних поля(3 и 4 с пустыми значениями). Это вообще норма или баг? с чем это связано?
-
AngryOwl отреагировална Alex Bozhko в Страница, посвященная книгам на офф сайте
Подборка книг "из первых рук".
http://community.embarcadero.com/resources/books
-
AngryOwl получил реакцию от sulion в Как нарисовать круглый TImage
var BmpNew : TBitmap; begin BmpNew := TBitmap.Create; BmpNew.SetSize({нужный размер}, {нужный размер}); BmpNew.Canvas.BeginScene; try BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap; BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch; BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап}; BmpNew.Canvas.Clear(0); BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1); finally BmpNew.Canvas.EndScene; end; TImage{ваш объект}.Bitmap.Assign(BmpNew); end; думаю так
-
AngryOwl получил реакцию от Kitty в Как заставить обычную форму отображаться как Popup?
Можно сделать так:
procedure TfmForma.FormCreate(Sender: TObject); begin inherited; Left := Screen.Size.Width - ClientWidth; Top := Screen.Size.Height - ClientHeight; {ну или где там она должна появляться} end; -
AngryOwl отреагировална Vitaldj в [TfgRichEdit]- компонент редактирования текста с поддержкой форматирования
Ярослав, а все таки когда будет доступен компонент простым пользователям? Очень нужен! )
-
AngryOwl получил реакцию от enatechno в Как нарисовать круглый TImage
var BmpNew : TBitmap; begin BmpNew := TBitmap.Create; BmpNew.SetSize({нужный размер}, {нужный размер}); BmpNew.Canvas.BeginScene; try BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap; BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch; BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап}; BmpNew.Canvas.Clear(0); BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1); finally BmpNew.Canvas.EndScene; end; TImage{ваш объект}.Bitmap.Assign(BmpNew); end; думаю так
-
AngryOwl отреагировална Brovin Yaroslav в [TfgRichEdit]- компонент редактирования текста с поддержкой форматирования
Новые вести с полей.
Проверена работа на Андроиде. Рендеринг прошел нормально. Добавлена возможность указывать межстрочный интервал для параграфов. Значительно переработаны настройки. Теперь можно задавать настройки для всех элементов в целом, для всех параграфов, так и локально для одного параграфа.
-
AngryOwl получил реакцию от Brovin Yaroslav в Как нарисовать круглый TImage
var BmpNew : TBitmap; begin BmpNew := TBitmap.Create; BmpNew.SetSize({нужный размер}, {нужный размер}); BmpNew.Canvas.BeginScene; try BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap; BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch; BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап}; BmpNew.Canvas.Clear(0); BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1); finally BmpNew.Canvas.EndScene; end; TImage{ваш объект}.Bitmap.Assign(BmpNew); end; думаю так
-
AngryOwl получил реакцию от BenTen в Как нарисовать круглый TImage
var BmpNew : TBitmap; begin BmpNew := TBitmap.Create; BmpNew.SetSize({нужный размер}, {нужный размер}); BmpNew.Canvas.BeginScene; try BmpNew.Canvas.Fill.Kind := TBrushKind.Bitmap; BmpNew.Canvas.Fill.Bitmap.WrapMode := TWrapMode.TileStretch; BmpNew.Canvas.Fill.Bitmap.Bitmap := {ваш битмап}; BmpNew.Canvas.Clear(0); BmpNew.Canvas.FillEllipse(RectF(0, 0, {нужный размер}, {нужный размер}), 1); finally BmpNew.Canvas.EndScene; end; TImage{ваш объект}.Bitmap.Assign(BmpNew); end; думаю так
-
AngryOwl получил реакцию от Kitty в Доступ к объекту стиля через StylesData в одном из примеров для XE8
Вот уже в который раз обсуждается подобный вопрос...
Я бы даже сказал - тот же самый!
Почти каждый раз пишу одно и то же, но все упорно наступают на те же самые грабли. При этом пытаясь меня убедить в том, что делать то я что я пишу - необязательно, и при этом жалуются что у них с их вариантами - не получается достичь нужного результата.
Отройте ссылку и в фрагменте кода найдите КЛЮЧЕВУЮ! строку:
newItem.OnApplyStyleLookup := MissMessageApplyStyle; Смысл - переопределите событие OnApplyStyleLookup для создаваемых итемов, а внутри MissMessageApplyStyle (назовите как угодно..) - перерисовывайте содержимое. Т.е. - буквально, обновляйте содержимое "ручками".
Тогда у Вас будет все работать как надо, картинки пропадать не будут, и т.д. и т.п.
З.Ы. И да, еще. Если ваш итем ну очень сложный какой-то, например, с необходимостью отрисовки срок разными цветами или что-то еще сложнее - можете переопределить OnRepaint...
З.З.Ы. В той же теме можете увидеть, насколько сложные итемы я создавал и что у них внутри есть, и все работает как надо...
-
AngryOwl получил реакцию от FIL в Доступ к объекту стиля через StylesData в одном из примеров для XE8
Вот уже в который раз обсуждается подобный вопрос...
Я бы даже сказал - тот же самый!
Почти каждый раз пишу одно и то же, но все упорно наступают на те же самые грабли. При этом пытаясь меня убедить в том, что делать то я что я пишу - необязательно, и при этом жалуются что у них с их вариантами - не получается достичь нужного результата.
Отройте ссылку и в фрагменте кода найдите КЛЮЧЕВУЮ! строку:
newItem.OnApplyStyleLookup := MissMessageApplyStyle; Смысл - переопределите событие OnApplyStyleLookup для создаваемых итемов, а внутри MissMessageApplyStyle (назовите как угодно..) - перерисовывайте содержимое. Т.е. - буквально, обновляйте содержимое "ручками".
Тогда у Вас будет все работать как надо, картинки пропадать не будут, и т.д. и т.п.
З.Ы. И да, еще. Если ваш итем ну очень сложный какой-то, например, с необходимостью отрисовки срок разными цветами или что-то еще сложнее - можете переопределить OnRepaint...
З.З.Ы. В той же теме можете увидеть, насколько сложные итемы я создавал и что у них внутри есть, и все работает как надо...
-
AngryOwl получил реакцию от Alex7wrt в Недостающий вариант Image WrapMode
Особо править нет времени, разберетесь. Все просто - это компонент, унаследованный от стандартного TImage, с теми свойствами, которые Вам нужны.
unit Sphere.ImageEx; interface uses System.Classes, System.Types, FMX.Types, FMX.Objects, FMX.Graphics; type TBitmapFit = (bfDefault, bfWidth, bfHeight, bfBoth); TImageEx = class(TImage) private FBitmapDisplayRect: TRectF; procedure SetBitmapFit(const Value: TBitmapFit); protected FBitmapFit: TBitmapFit; procedure Paint; override; public constructor Create(AOwner: TComponent); override; function ImagePointToBitmap(const APoint: TPointF): TPointF; property BitmapDisplayRect: TRectF read FBitmapDisplayRect; published property BitmapFit: TBitmapFit read FBitmapFit write SetBitmapFit; end; implementation { TImageEx } constructor TImageEx.Create(AOwner: TComponent); begin inherited; FBitmapFit := bfDefault; FBitmapDisplayRect := TRectF.Empty; end; function TImageEx.ImagePointToBitmap(const APoint: TPointF): TPointF; begin Result := APoint; if not (BitmapDisplayRect.IsEmpty) and Assigned(Bitmap) then begin Result.X := Result.X - Trunc(BitmapDisplayRect.Left); if Bitmap.Width > BitmapDisplayRect.Width then Result.X := Result.X / (BitmapDisplayRect.Width / Bitmap.Width ); Result.Y := Result.Y - Trunc(BitmapDisplayRect.Top); if Bitmap.Height > BitmapDisplayRect.Height then Result.Y := Result.Y / (BitmapDisplayRect.Height / Bitmap.Height ); end; end; procedure TImageEx.Paint; begin {весь код - в прикрепленном файлике} // всегда центрируем для этих методов отрисовки else if FBitmapFit <> bfDefault then begin // растягиваем по ширине с обрезкой верхнего/нижнего краев Canvas.BeginScene(); try Coef := B.Width / B.Height; R := RectF(0, 0, B.Width, B.Height); if FBitmapFit = bfWidth then R := RectF(0, 0, Width, Width / Coef) else if FBitmapFit = bfHeight then R := RectF(0, 0, Height * Coef, Height) else if FBitmapFit = bfBoth then begin if Coef >= 1 then R := RectF(0, 0, Height * Coef, Height) else R := RectF(0, 0, Width, Width / Coef); end; RectCenter(R, LocalRect); Canvas.DrawBitmap(B, RectF(0, 0, B.Width, B.Height), R, AbsoluteOpacity, DisableInterpolation); FBitmapDisplayRect := R; finally Canvas.EndScene(); end; end; end; procedure TImageEx.SetBitmapFit(const Value: TBitmapFit); begin if FBitmapFit <> Value then begin FBitmapFit := Value; Paint(); end; end; //initialization // RegisterFMXClasses([TImageEx]); end. Sphere.ImageEx.zip
-
AngryOwl отреагировална Brovin Yaroslav в [TfgRichEdit]- компонент редактирования текста с поддержкой форматирования
Работа продолжается.
Добавлена поддержка расскраски Delphi кода. Создана система, позволяющая самостоятельно обрабатывать блоки документа. Например, чтобы сделать разметку кода. Значительно проработаны отступы для блоков. Добавлены внешние и внутренние отступы. Исправлены многострочные списки. Теперь если элемент списка занимает больше одной строки, он отображается корректно. Добавлена поддержка закрашивания заднего фона.
Так же этот компонент уже интегрирован в будущую настольную версию клиента форума.
-
AngryOwl получил реакцию от zairkz в Заставка приложения до Form1.Show
"- создайте форму (например fmSplash) и на ее событие OnFormCreate делаете все что вам нужно
- и когда, на ваш взгляд, уже пора создать главную форму приложения - обновите информацию в TfgProgressDialog и в блоке
TThread.Synchronize(TThread.CurrentThread, procedure
begin
{....}
Application.CreateForm(TfmMain, fmMain);
end);
создайте все формы вашего приложения..."
чего там только нет... даже боюсь начать перечислять...
-
AngryOwl отреагировална VladimirS в транслировать изображение экрана Андроид-смартфона
Подскажите, как транслировать изображение экрана Андроид-смартфона на ПК? Желательно без root и для версии 4.1.1 4.2