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

Steepe_Hare

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

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

  • Посещение

Весь контент Steepe_Hare

  1. Ошибку дает при сохранении: --------------------------- Debugger Exception Notification --------------------------- Project Project1.exe raised exception class EBitmapSavingFailed with message 'Saving bitmap failed.'. --------------------------- Break Continue Help ---------------------------
  2. Как ведет себя приложение, написанное для Андроид, со множеством таймеров? Не подтормаживает ли? Корректно ли считают время таймеры? Делаю мобильное приложение что-то вроде Фермы или Запорожья, и там многое построено на отсчетах промежутков времени.
  3. Рисует черный квадрат, а битмап не виден( if OpenDialog1.Execute then begin MyBitmap := TBitmap.CreateFromFile(OpenDialog1.Files[0]); MyRect := TRectF.Create(50, 30, 65, 45); Image1.Bitmap.Canvas.BeginScene; Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect, 1); Image1.Bitmap.Canvas.EndScene; MyBitmap.Free; end;
  4. Уже который день замечаю такую ситуацию. Исходные данные: Windows 7 на компе, Delphi Berlin 10.1, отладка на смартфоне Samsung Galaxy S4. Запускаю сеанс Берлина. После трех-четырех запусков приложения из среды на мобильнике при старте - просто черный экран. В среде недоступна функция Program Reset (Ctrl + F2). Если попытаться закрыть среду, то сообщение "This current debug session must end before the requested operation can complete. Please indicate how you would like to end the debug session." (Terminate, Detach, Cancel, Help) и зависание. Приходится просто снимать bds.exe в Диспетчере задач. Android-приложение при этом корректно создается, и если его запускать с Приложений мобильника, то оно запускается и работает нормально.
  5. Нашел причину ошибки! Если в самой среде на этапе дизайн-тайм загрузить картинку, то расчерчивание в ран-тайме идет корректно. Но если грузить картинку в битмап в OnCreate из ресурсов, то расчерчивание странным образом идет. Часть линий как будто накладывается друг на друга. Как исправить во втором случае? Спасибо заранее.
  6. Объясните, пожалуйста, почему этот простой код работает по-разному в Win32 и на Андроиде? Картинка 150x200 в битмап уже загружена и нужно ее расчертить. Image1.Bitmap.Canvas.BeginScene; try Image1.Bitmap.Canvas.Stroke.Kind := TBrushKind.Solid; Image1.Bitmap.Canvas.Stroke.Color := TAlphaColors.Blue; for I := 0 to 9 do Image1.Bitmap.Canvas.DrawLine(TPointF.Create(I * 15, 0), TPointF.Create(I * 15, Image1.Bitmap.Height), 1); for J := 0 to 9 do Image1.Bitmap.Canvas.DrawLine(TPointF.Create(0, J * 20), TPointF.Create(Image1.Bitmap.Width, J * 20), 1); finally Image1.Bitmap.Canvas.EndScene; end; Под Виндой создается точная сетка 10x10, а под Андроид как будто другая система координат и территория делится на огромные квадраты (больше, чем надо).
  7. А есть ли список приложений для Android, сделанных в среде Embarcadero RAD? (с ссылками) Просто хочется посмотреть, на что способны (в плане графики) игры, сделанные на FireMonkey. Спасибо.
  8. Извиняюсь, но не совсем вас понял. Image.Bitmap пустой в дизайн-тайме (а он обязан быть заполненным??). Картинка туда грузится из ресурсов только в ран-тайме.
  9. в главном потоке. Image.Bitmap грузит из ресурсов картинку. Под Win32 всё работает
  10. Вот этот код дает ошибку. Что в нем не так? var MemStream: TMemoryStream; begin Image1.Bitmap.Canvas.BeginScene; MemStream := TMemoryStream.Create; try Image1.Bitmap.Clear(0); with TResourceStream.Create(hInstance, PChar('territoria'), RT_RCDATA) do try SaveToStream(MemStream); finally Free; end; MemStream.Position := 0; Image1.Bitmap.LoadFromStream(MemStream); finally Image1.Bitmap.Canvas.EndScene; MemStream.Free; end; Image1 в дизайн-тайме пустой.
  11. Выбрасывает на модуль FMX.Canvas.GPU в конструктор: constructor TCanvasGpu.CreateFromBitmap(const ABitmap: TBitmap; const AQuality: TCanvasQuality = TCanvasQuality.SystemDefault); .... begin .... if not Bitmap.HandleAllocated then raise ECanvasException.Create('Handle not allocated');
  12. Под Windows 32 приложение собирается и работает отлично, под Android при запуске из RAD-среды сразу говорит: Project project1.apk raised exception class ECanvasException with message 'Handle not allocated' и отказывается работать. В чем может быть причина?
  13. http://docwiki.embarcadero.com/CodeExamples/Berlin/en/FMXTCanvasDrawFunctions_(Delphi) procedure TForm1.DrawLineClick(Sender: TObject); var p1, p2: TPointF; begin // sets the ends of the line to be drawn p1 := TPointF.Create(20, 2); p2 := TPointF.Create(350, 400); Image1.Bitmap.Canvas.BeginScene; // draws the line on the canvas Image1.Bitmap.Canvas.DrawLine(p1, p2, 100); Image1.Bitmap.Canvas.EndScene; end;
  14. я видел и 100 значение в одном офиц.примере
  15. Отсюда взял: http://docwiki.embarcadero.com/CodeExamples/Berlin/en/FMXTCanvasDrawFunctions_(Delphi)
  16. Вот так получше? Image1.Bitmap.Clear(TAlphaColors.White); if OpenDialog1.Execute then begin MyRect := TRectF.Create(50, 30, 150, 200); MyBitmap := TBitmap.CreateFromFile(OpenDialog1.Files[0]); Image1.Bitmap.Canvas.BeginScene; try Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect, 20); finally Image1.Bitmap.Canvas.EndScene; MyBitmap.Free; end; end;
  17. Пример, взятый из Интернета: // clears the canvas Image1.Bitmap.Clear(TAlphaColors.White); // loads the bitmap using the TOpenDialog. if OpenDialog1.Execute then MyBitmap := TBitmap.CreateFromFile(OpenDialog1.Files[0]); // set the MyRect coordinates MyRect := TRectF.Create(50, 30, 150, 200); Image1.Bitmap.Canvas.BeginScene; // draws on the rectangle specified by MyRect the area from MyBitmap specified by MyRect Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect, 20); Image1.Bitmap.Canvas.EndScene; Если мы, допустим, раз в секунду повторяем эту процедуру, постоянно загружая в Image1 новый MyBitmap, то нужно ли делать MyBitmap.Free или очистка памяти происходит сама?
  18. Раньше для Delphi был DKB (Delphi Knowledge Base), такой огромный сборник советов и примеров для программирования в среде Delphi (Tips and Tricks) Нет ли чего-то подобного для Firemonkey?
×
×
  • Создать...