Рисование с использованием реальных пикселей на сетчатке - PullRequest
2 голосов
/ 17 ноября 2011

Что мне нужно сделать, чтобы нарисовать некоторые фигуры на сетчатке, определяя реальные пиксели экрана. Я имею в виду, что мне нужно, чтобы все строки имели ширину 1 пиксель и не имели сглаживания. И, если я напишу код:

CGContextMoveToPoint(context,0,0);
CGContextAddLineToPoint(context,0,959);

, тогда на дисплее будет линия от левого верхнего пикселя к нижнему левому пикселю, включая его.

Если я правильно понял, мне нужно использовать CGContextScaleCTM. Но не всегда одна и та же закономерность в координатах. Иногда есть смещение по оси Y, а иногда нет. Я попытался написать макрос для преобразования координат, но запутался совсем. Я знаю, что есть логические точки и автоматическое позиционирование. Но это то, что мне нужно нарисовать все пиксели вручную, потому что я разрабатываю некоторые Util.

1 Ответ

4 голосов
/ 17 ноября 2011

Попробуйте вместо этого:

CGContextMoveToPoint(context, 0.5, 0);
CGContextAddLineToPoint(context, 0.5, 959);

Почему: Линия шириной 1,0 пикселя будет центрирована по указанным вами координатам.Поэтому, если вы начнете с (0, 0), половина строки будет находиться в столбце от -1 до 0, а половина строки будет находиться в столбце от 0 до 1. Целочисленные координаты дают вам углы пикселей, что хорошо для таких вещей, как растровые изображения.

...