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

Armageddets

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

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

  • Посещение

Посетители профиля

2 329 просмотров профиля

Достижения Armageddets

  1. Спасибо огромное за помощь - это то, что нужно. Даже много лишнего кода у меня оказалось.
  2. Исправил код на вот такой, но рисуется вместо картинки черный квадрат, а выставляя половинную прозрачность рисуется серый квадрат. То есть прозрачность - применяется. procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); var C1,C2:TRectF; begin PaintBox1.Canvas.BeginScene; C1:=rectF(0,0,420,680); C2:=rectF(0,0,420,680); fon.SetSize(420,680); Buf.Canvas.DrawBitmap(fon,C1, C2, 1); //0-1 prozrachnost (opacity), 0.5 - na polovinu prozrachniy PaintBox1.Canvas.DrawBitmap(Buf,C1, C2, 0); PaintBox1.Canvas.EndScene; end; Сам проект тоже прилагаю, может я с ним нахимичил что-то: https://dropmefiles.com/XXqWc
  3. Ой - грубая ошибка с моей стороны. Прошу прощения. Теперь зависание и правда пропало - единственное - изображение так и не рисуется на форме - просто черный экран. Видимо я все еще делаю что-то не так. Компилирую приложение на Leagoo T5c (Android 7). Может я неправильно задаю параметры в прорисовке DrawBitmap?
  4. Спасибо всем большое. Да пропустил Create по невнимательности. А картинки я через resource and images загружаю так как все примеры, которые я находил так загружали. В Deployment тоже отображается путь к моей картинке на пк. По поводу bmp - в ресурсах увидел тип данных bitmap, поэтому, видимо, ошибочно решил, что поддержка этого формата есть. Проект, который я делаю - это мини игра (из старого своего проекта), которую я решил попробовать портировать под андроид и заодно разобраться с программированием под андроид В итоге я сделал следующие изменения: Прорисовку убрал из FormPaint в таймер: procedure TForm1.Timer1Timer(Sender: TObject); var C1,C2:TRectF; begin Canvas.BeginScene; C1:=rectF(0,0,420,680); C2:=rectF(0,0,420,680); fon.SetSize(420,680); Buf.Canvas.DrawBitmap(fon,C1, C2, 0); //0-1 prozrachnost (opacity), 0.5 - na polovinu prozrachniy Canvas.DrawBitmap(Buf,C1, C2, 0); Canvas.EndScene; end; Картинку bmp перезалил в формате jpg и добавил недостающую строчку Fon.Create; procedure DownloadImages; var RS: TResourceStream; begin RS:=TResourceStream.Create(HInstance, 'FonMain', RT_RCData); try fon.Create; Fon.Width:=420; Fon.Height:=680; Fon.LoadFromStream(RS); finally RS.Free; end; end; Но в итоге андроид приложение все еще виснет на отображении картинки заставки с огнем (то есть загрузка изображения все еще не идет).
  5. Всем доброго времени суток. Начал осваивать создание приложений на андроид и столкнулся с проблемой. Приложение компилировалось ровно до того момента пока я не попытался загружать изображение из ресурсов. В ресурсы добавлена картинка с именем Fon (идентификатор FonMain) и типом RCData, формат Bmp (24 бита). Если убрать строчку DownloadImages, то приложение скопилируется и запустится. Код прилагаю ниже. Прошу помощи разобраться в проблеме - где я допустил ошибку? Учусь по статьям в интернете и довольно большая часть кода от туда не работает (даже с получением разрешения экрана были проблемы - пришлось пока ориентироваться просто на размер формы временно). unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Helpers.Android, Androidapi.JNI.Util; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Buf:TBitmap; Regim,Xr,Yr:integer; fon:Tbitmap; procedure DownloadImages; implementation {$R *.fmx} {$R *.LgXhdpiPh.fmx ANDROID} procedure DownloadImages; var RS: TResourceStream; begin RS:=TResourceStream.Create(HInstance, 'FonMain', RT_RCData); try Fon.Width:=420; Fon.Height:=680; Fon.LoadFromStream(RS); finally RS.Free; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Regim:=0; Buf:=TBitmap.Create; Buf.Width:=420; Buf.Height:=680; form1.Border.Styling:=false; DownloadImages; //zagruzka kartinok end; procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); var C1,C2:TRectF; begin Form1.Canvas.BeginScene; C1:=rectF(0,0,420,680); C2:=rectF(0,0,420,680); fon.SetSize(420,680); Buf.Canvas.DrawBitmap(fon,C1, C2, 0); form1.Canvas.DrawBitmap(Buf,C1, C2, 0); Form1.Canvas.EndScene; end; procedure TForm1.FormResize(Sender: TObject); begin Xr:=form1.ClientWidth; Yr:=form1.ClientHeight; //Showmessage(Inttostr(Xr)+'x'+Inttostr(Yr)); end; end.
  6. Доброго времени суток. Мне нужно в программе сделать возможость находжения и открытия текстового файла например в компонент мемо. Сложность в том, что компонент Open Dialog похоже не работает для андроида. Можно ли с помощью другого компонента или еще как-то загрузить файл в мемо. Или хотя бы получить путь к файлу, чтобы затем получить возможность загрузки по этому пути. Всем заранее спасибо.
  7. Рисование происходит в событии формы OnPaint. Далее таймер вызывает Form1.invalidate; Если надо читать через поток, то как именно это сделать? var Stream: TResourceStream; begin Stream:= TResourceStream.Create(hInstance, 'YouRes', RT_RCDATA); try //как именно загрузить файл из потока? finally Stream.Free; end;
  8. Всем доброго времени суток! Через Deployment добавил все нужные картинки. В моем случае мои картинки изменяться никак не будут, и открываются только для чтения. Поэтому я не стал менять пути для них. В связи с этим столкнулся с проблемой - как же собственно получить доступ к ним? То есть мне нужно нарисовать одну из тех картинок. Я не знаю как правильно это делать. Я подключил вверху System.IOUtils, чтобы получить доступ к TPath. Пробовал разные варианты: просто рисовать картинку с этим именем: form1.Canvas.DrawBitmap(fon,RectF(0,0,320,240),RectF(30,30,320,240),1,true); пробовал указывать так еще: fon:=Tbitmap.CreateFromFile(TPath.Combine(TPath.GetDocumentsPath, 'fon.bmp')); а затем рисовал таким же способом: form1.Canvas.DrawBitmap(fon,RectF(0,0,320,240),RectF(30,30,320,240),1,true); Читал тему на вашем форуме с названием "Включение своих файлов в приложение", но это не помогло мне. Не знаю, может надо как ресурс еще их подключить? Хотя мне кажется я неправильно использую TPath. Заранее спасибо всем за помошь.
  9. Захожу Project - > Resources and images. Добавляю туда порядка 20 картинок и задаю им там имена, тип ресурса выбираю Bitmap. Проект после этого нормально запускается. Но вот вопрос. Как мне теперь подключить файл ресурса в проект и вытянуть нужные картинки от туда? После сборки проекта в папке с проектом пявились файлы: Project1Resource.rc, Project1.dres, Project1.res и вроде Project1.deployproj. Насколько я понимаю для подключения нужны первые 2. Первый очевиден по названию, второй по размеру совпадает с папкой с картинками, из которой я брал файлы. Подключаю файл ресурс я так: {$R 'Project1.dres' 'Project1Resource.rc'} Не знаю правильно ли я сделал, но как мне теперь картинки в программе вытянуть с него и нарисовать? Я подозреваю, что работать надо с потоком, но не знаю как именно. Заранее спасибо всем за помощь.
  10. Пытаюсь загрузить в проект изображение TBitmap. Правильно ли я делаю? Отобразить картинку не получается у меня. И обязательно ли указывать размеры для картинок или буфера при загрузке, может в этом ошибка? Либо, как мне кажется, ошибка в том, что картинку, которую я загружаю находится не в файле ресурсов, а просто в папке с проектом (наверное так нельзя). Просто с ресурсами никогда не работал ранее да и Fire Monkey в том числе. Проект делаю в RadStudio Xe6. var fon:TBitmap; procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin Fon:=TBitmap.Create; Fon.LoadFromFile('\img\fon.bmp'); end; procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); begin if Canvas.BeginScene then try form1.Canvas.DrawBitmap(fon,RectF(0,0,320,240),RectF(30,30,320,240),1,true); finally Canvas.EndScene; end; end; Может еще таймер нужно задействовать? Заранее спасибо всем, кто отклинется помочь. К стати возможно я неправильный проект создаю для рисования 2д графики? Я делаю так: file --> fire monkey mobile application delphi --> blank application. Если надо другой вариант выбирать, то какой?
  11. И еще вопрос. Вы ранее написали, что можно в таймере вызывать Repaint; Но такого свойства в форме нет и в ее канве, по крайней мере RadStudio XE6 не предлагает такого варианта.
  12. пытаюсь в приложении для Android просто вывести хоть какое-то изображение, но ничего не выходит. Делаю так в событии формы OnPaint: if Canvas.BeginScene then try Canvas.DrawLine(form1.ClientRect.TopLeft,form1.ClientRect.BottomRight,1); Canvas.DrawEllipse(Rectf(0,0,50,50),1); finally Canvas.EndScene; end; Но выходит просто черный экран и все. Если убрать прорисовку эллипса, то риуется просто белый екран. Вообще для игры нужно вывести битмап на форму, но даже такие примитивы не выходит вывести. не могу понять почему? Больше никакого кода в проекте нет. Если без этого кода просто на форму накидать компонентов imagecontrol и загрузить вних изображения, то их видно в приложении. И еще вопрос. Вы ранее написали, что
×
×
  • Создать...