我需要做些什么来在视网膜显示器上绘制一些形状,定义实际的屏幕像素。 我的意思是我需要所有的行都是1像素宽,而且没有抗锯齿。而且,如果我写下代码:
CGContextMoveToPoint(context,0,0);
CGContextAddLineToPoint(context,0,959);
然后显示将是从左上角最左边的像素到包括它的最左边最像素的线。
如果我理解得很好,我需要使用CGContextScaleCTM。但坐标中并不总是有相同的规律性。 有时在Y轴上有偏移,有时没有。我试着写一些用于转换坐标的宏,但一直都很困惑。 我知道,有逻辑点和自动定位的东西。但是我需要手动绘制所有像素,因为我正在开发一些像素 UTIL。
答案 0 :(得分:4)
请改为尝试:
CGContextMoveToPoint(context, 0.5, 0);
CGContextAddLineToPoint(context, 0.5, 959);
为什么: 1.0像素宽的线条将以您给出的坐标为中心。因此,如果从(0,0)开始,该行的一半将在-1到0的列中,并且该行的一半将在0到1的列中。整数坐标为您提供像素的角,这对像光栅图像这样的东西很有用。