Работа с tcanvas в Делфи за Android
Въз основа на TCanvas в Делфи XE5 за Android, както се оказва, има някои функции, които са въведени в началото на мен в леко объркване, и които искат да споделят.
Нарисувайте няколко успоредни линии.
Тук бих искал да отделям и имайте предвид, че под Windows Stroke.Kind подразбиране е bkSolid, но под Android - bkNone. Това е, освен ако изрично определя стойността на Stroke.Kind, линията ще се вижда под Windows, но не и за Android. Аз не знам какво може да се нарече такъв подход.
Това е, което аз имам:
Очевидно е, че някои от линиите са се оказали по-дебел от другите. Същият код за Windows работи перфектно.
Причината за това е, че в За разлика от Windows, Android пиксела логика не винаги съвпада с физическото. А линията, уловени между физическите пиксели "ерозира" в непосредствена близост, за да се вижда. По този начин компромис между точност и качество на изобразяване.
Ако, обаче, трябва да се направи една и съща линия, можете да ги преместите в половината от дебелината да се гарантира, че те ще получат във физически пиксела.
Това решава проблема на компонента така TLine и предшественик TShape:
Чрез промяна на кода правилно, можете да постигнете същите редове:
Да направим тази промяна може да не винаги автоматично: в такъв случай неточността на координатите ще доведе до скок в анимации. Но все пак бих искал да видя някакъв флаг, което позволява да се премине на избор между красота и точност, за да FireMonkey. По-скоро досаден постоянно да го направя сам.
Alysson Куня предложи друг подход към проблема: