2011-11-17 86 views
2

我需要做什么才能在视网膜显示屏上绘制一些形状,定义实际屏幕像素。 我的意思是说,我需要所有的行将是1像素宽度,并没有抗锯齿。并且,如果我编写代码:使用实际像素在视网膜显示屏上绘图

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

然后在显示屏上将从最左上角的像素向最左侧的像素行,包括它。

如果我理解得很好,我需要使用CGContextScaleCTM。但坐标中并不总是相同的规律性。 有时在Y轴上有偏移,有时没有。我试图写一些宏转换坐标,但一直困惑。 我知道,有逻辑点和自动定位的东西。但这是我需要手动绘制所有像素的原因,因为我正在开发一些 util。

回答

4

试试这个:

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

为什么:一个1.0像素宽的线将在你给它的坐标为中心。所以如果你从(0,0)开始,那么线的一半将在从-1到0的列中,并且线的一半将在从0到1的列中。整型坐标给出了像素的拐角,这对于光栅图像等很好。

+0

有STIL像一些功能问题: CGContextAddRect(...) 我用我的应用程序许多不同的CG功能和许多循环。有没有办法映射到像素而不是像素的边缘? – Nikita

+0

上面给出的代码映射到像素而不是像素的边缘。 –