2015-11-04 38 views
7

Występują problemy z malowaniem podczas łączenia TScaledLayout i niestandardowych stylów utworzonych za pomocą projektanta stylów bitmap w fmx.Problemy z malowaniem za pomocą TScaledLayout i niestandardowymi stylami

Aby zademonstrować, załadowałem domyślny styl niestandardowy utworzony przez wybranie "Nowy styl dla VCL/FMX" -> "zapisz jako .style" w projektancie stylu bitmap. Zrzuciłem kilka standardowych kontroli na niektóre kolorowe prostokąty: czerwone zielone na & zielone na TScaledLayout, niebieskie bezpośrednio na formularzu. Gdy rozciągam formularz, pojawiają się kolorowe linie na kontrolkach na ScaledLayout; tło jest częściowo widoczny:

paint issue with stretched controls

Jeśli rozmiar kształt dokładnie odpowiadający wymiar czasu projektowania linie znikają. Wydaje się, że jest to dość znacząca kwestia, z pewnością nie mogę z nich korzystać w podobny sposób. Czy ktoś ma pomysł na możliwą naprawę lub obejście?

+1

Widzimy ten sam problem dla wielu wersji Delphi. Nadal istnieje w Delphi 10 w Seattle. – norgepaul

Odpowiedz

0

Wygląda na to, że jest to znany problem ze skalowaniem i bitmapami. Zobacz dyskusję w Google+ tutaj - https://plus.google.com/+PaulThornton/posts/ACAHkJD3a84. Zacytuję myśli Marco Cantu jest:

Znalazłem wewnętrznie zgłoszony problem o podobnym przypadku, ale nie znaleźć taki, który pasuje do tego scenariusza. Z pewnością warto dodać do jakości portalu . Powiedziawszy to, obawiam się, że operacje na bitmapach i skalowanie nie pasują do siebie bardzo dobrze i może być trudne , aby mieć kompleksowe rozwiązanie.

Pozwolę sobie wyjaśnić na przykładzie. Weź przycisk. To jest namalowane przez FMX z 9 sekcjami (krawędzie, rogi, część środkowa), dzięki czemu niezależnie od rozmiaru elementy bitmap są rozciągane w jednym kierunku co najwyżej, często po prostu rysują. Rozciągnięcie pojedynczej bitmapy przycisku do docelowego rozmiaru spowoduje przerwanie wygładzania i utworzenie rozmytego obrazu przy użyciu kolorów.

Oto przykład tego, co dzieje się z ScaledLayout, biorąc pod uwagę, że zajmuje kompletny obraz końcowy i przekształca go. ScaledLayout był pierwotnie wprowadzony za pomocą stylów wektorowych i działał bardzo dobrze w tym scenariuszu. Z dzisiejszymi stylami bitmap rzeczy stają się bardziej złożone.

Niezależnie od tego wyjaśnienia problemu, zalecam zgłoszenie go na temat kontroli jakości, a dopilnuję, aby nie został zamknięty jako projekt (może się to oczywiście zdarzyć, tak wygląda system działa), ale my przeprowadzamy pewne dochodzenie, aby rozwiązać ten problem - zamieniając to w żądanie funkcji .

+0

Znalazłem, że to wydaje się być problem z D2D, jeśli wymuszam używanie GDI + (FMX.Types.GlobalUseDirect2D: = false) działa dobrze. To oczywiście nie jest dobre rozwiązanie, ponieważ poświęca wszystkie zalety D2D. Jak to się zgadza z wyjaśnieniem Marco? – DNR