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

Кроссплатформенное приложение по-разному масштабирует графику в Windows и Android


Lev

Вопрос

Добрый день! Делаю кроссплатформенное приложение. В TBitmap в памяти "рисую" картинку, затем передаю ее на TImage через TCanvas:

  with Image1.Bitmap.Canvas do begin
    BeginScene;
    DRect := TRectF.Create(0, 0, MonsterBitmap.Width - 1, MonsterBitmap.Height - 1);
    DrawBitmap(MonsterBitmap, DRect, DRect, 1, true);
    EndScene;
  end;

В Windows-приложении все нормально, области рисования заполняются четко как положено, без всякого масштабирования.

А вот в Android-приложении на моем телефоне картинка почему-то растягивается в три раза! А на телефоне жены - в два раза! В чем подвох, где нужно отключить паразитное масштабирование?

Android.png

Windows.png

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
4 часа назад, haword сказал:

scale на windows 1 на android в зависимости от разрешения экрана. попробуйте рисовать не на image а на panel например или другой контрол. 

Спасибо за советы, попробовал. На panel андроид-приложение виснет при старте, зато компонент ImageControl отображал все правильно, но... вокруг картинки появилась дурацкая белая рамка, которую никак не отковыряешь (((

Готов уже считать масштабирование сам, однако не ясно, откуда брать данные, чтобы коэффициент растяжения/сжатия рассчитать?

Ссылка на комментарий
  • 0

Все, порядок, победил!

Помогло вот это:

if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenService)) then
  begin
    LogicScreenSize := ScreenService.GetScreenSize.Round;
    ScreenScale := ScreenService.GetScreenScale;
    GlobalScreenScale := ScreenScale;
    Memo1.Lines.Add(Format('Logical size: %d, %d', [LogicScreenSize.X, LogicScreenSize.Y]));
    Memo1.Lines.Add(Format('Phisical size: %f, %f', [LogicScreenSize.X * ScreenScale, LogicScreenSize.Y * ScreenScale]));
    Memo1.Lines.Add(Format('Scale coeff: %f',[ScreenService.GetScreenScale]));
  end
  else GlobalScreenScale := 1;

Далее коэффициент используется при DrawBitmap у второго прямоугольника и вуаля)))

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...