2015-11-04 10 views
7

У меня возникают проблемы с рисованием при объединении TScaledLayout и пользовательских стилей, созданных в дизайнере стиля растрового изображения в fmx.Проблемы с картинкой с TScaledLayout и настраиваемыми стилями

Чтобы продемонстрировать, я загрузил пользовательский стиль по умолчанию, созданный путем выбора «Новый стиль для VCL/FMX» -> «сохранить как. Стиль» в дизайнере стиля растрового изображения. Я сбросил несколько стандартных элементов управления на некоторых цветных прямоугольниках: красный & зеленых на TScaledLayout, синий прямо на форме. Когда я растягиваю форму, на элементах управления ScaledLayout появляются цветные линии; фон частично виден:

paint issue with stretched controls

Если я размер формы в точности соответствуют размерам времени разработки, линии исчезают. Это похоже на довольно значительную проблему, я, конечно, не могу использовать эти два вместе. Есть ли у кого-нибудь идеи для возможного исправления или обходного пути?

+1

Мы видели ту же проблему для многих версий Delphi. Он все еще существует в Delphi 10 Seattle. – norgepaul

ответ

0

Похоже, что это известная проблема с масштабированием и растровыми изображениями. См. Обсуждение в Google+ здесь - https://plus.google.com/+PaulThornton/posts/ACAHkJD3a84. Я процитирую мысль Марко Канту в:

Я нашел внутренне сообщили вопрос о подобном случае, но не нашел тот, который соответствует этому сценарию. Разумеется, стоит добавить к качеству портал . Сказав это, я опасаюсь, что операции с растровым рисунком и масштабирование не очень хорошо сочетаются друг с другом, и может быть сложно иметь все всеобъемлющее решение.

Позвольте мне объяснить на примере. Возьмите кнопку. Это окрашено FMX с 9 разделами (границы, углы, центральная часть), так что независимо от размер растровых элементов растягивается не более чем в одном направлении, часто просто рисует. Растяжение одного растрового изображения для кнопки до размера цели приведет к слому сглаживания и созданию размытого изображения при использовании с использованием цветов.

Это пример того, что происходит с ScaledLayout, учитывая, что оно принимает окончательное изображение и преобразует его. ScaledLayout изначально был , представленный с векторными стилями, и очень хорошо работал в этом сценарии. С сегодняшними растровыми стилями вещи становятся немного сложнее.

Независимо от этого объяснения там, исправно, я бы рекомендовал сообщать об этом на КК, и я прослежу, чтобы он не свернут, как дизайн (это может произойти, естественно, это как система работает), но мы сделаем некоторое расследование, чтобы решить проблему - превратить это в запрос функции .

+0

Я обнаружил, что это похоже на проблему с D2D, если я использую GDI + (FMX.Types.GlobalUseDirect2D: = false), он отлично работает. Очевидно, это не очень хорошее решение, поскольку оно приносит в жертву все преимущества D2D. Как это согласуется с объяснением Марко? – DNR

Смежные вопросы