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

Искажения текста на Canvas под Windows XP


Вадим Смоленский

Вопрос

В своем проекте (это японско-русский словарь) я часто вывожу текст на TImage методом TCanvas.FillText, и результат выглядит так:

ba_good.png.b99cc23436fc51e950437d37ca955a70.png

Один из тестеров, у которого установлена Windows XP, прислал скриншот того, что выводится у него:

ba_bad.png.4164d7a3cef0b4663c230bde8d6962ad.png

Ровно такую же безобразную картину я видел у себя, когда, экспериментируя с быстродействием, вставлял в файл dpr операторы  FMX.Types.GlobalUseDX:=False или FMX.Types.GlobalUseDirect2D:=False

То ли в XP эти установки приняты по умолчанию, то ли так сконфигурирована система у тестера. Первое, что приходит в голову - вставить в код присвоение обеим упомянутым переменным значения True. Но прежде, чем предпринять такую попытку, хотелось бы услышать мнение экспертов. В чем здесь корень зла?

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

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

  • 0

На XP Вы не сможете использовать Direct2D, следовательно, чтобы обеспечить совместимость Вам необходимо добиться нормального вида при FMX.Types.GlobalUseDirect2D:=False. К тому же не забывайте и про это:

unit FMX.Platform.Win;

...

function TPlatformWin.GetDefaultFontFamilyName: string;
begin
  if TOSVersion.Check(6) then
    Result := 'Segoe UI'
  else
    Result := 'Tahoma';
end;

Т.е. еще и шрифт Tahoma, если Вы его не меняете вручную.

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

Изменение шрифтов вручную у меня предусмотрено, и Tahoma - не тот шрифт, который идет по умолчанию. Но я пока не понимаю, как добиться нормального вида при FMX.Types.GlobalUseDirect2D:=False.

Ссылка на комментарий
  • 0
14 часа назад, dnekrasov сказал:

Попробуйте вместо Canvas.FillText использовать Canvas.TextToPath и Canvas.FillPath - может поможет.

Попробовал бы, но уж слишком много кода придется менять ради 5-7% юзеров. Предполагаю, что качество вывода при этом все равно упадет, разве что меньше. Скорее всего, придется этим небольшим и уходящим сегментом рынка пожертвовать.

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

Думал, что вопрос закрыт, но вот еще один тестер прислал ровно такую же похабную картинку. А у этого тестера вовсе не XP, а вовсе даже Windows 7 SP1 x64. Говорит, что нормально запускается только в случае, если включен режим Windows Aero.

Никто не знает, как такие штуки лечатся?

Ссылка на комментарий
  • 0
В 07/01/2018 в 11:08, dnekrasov сказал:

Попробуйте в файле проекта добавить GlobalUseGDIPlusClearType := False

Помогло! Даже под XP теперь всё красиво.

Собственно, проблему я сам на себя навлек, когда по чьему-то совету вставил в файл проекта  GlobalUseGDIPlusClearType := True для повышения быстродействия. Причем, нельзя сказать, чтобы быстродействие после этого ощутимо повысилось. Наверняка этот параметр принимает False по умолчанию, но пусть на всякий случай присвоение останется.

Спасибо!

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...