Рисование с использованием реальных пикселей на сетчатке

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

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам