如何在Mac OS X上的CGBitmapContext上进行像素对齐/像素完美/后备存储对齐/清晰绘图?

时间:2014-09-22 04:02:51

标签: macos core-graphics quartz-graphics

我正在使用Mac OS X(不是iOS)上的矢量图形绘图,而且我在Mac OS X上遇到导致线条模糊的像素之间的经典绘图。做矢量图形基元。我直接使用Core Graphics / Quartz处理CGBitmapContext。

我发现了this blog post以及产生它的Stack Overflow问题,而且我不想在每个坐标上添加0.5,因为该文章声称这会在Retina屏幕上中断。

文章提到了使用后备存储坐标,但我无法在Core Graphics中找到任何后备存储功能,更不用说只有CGBitmapContext。

我已经尝试了CGContextConvertPointToDeviceSpace()CGContextConvertPointToUserSpace(),两者都无济于事。

My bitmap context is transformed.

我有哪些选择?感谢。

替代问题:有没有办法让我不能使用点坐标,这样(4,4)总是(4,4)而不是(3.5,3.5)或者古怪的东西?这完全适用于内存中的图像,因此DPI还不是一个大问题。感谢。

1 个答案:

答案 0 :(得分:3)

这对我来说非常有用,直接来自手册。希望它可以帮助某人:)

CGRect r = CGRectMake(0,0,20,20);
r = CGContextConvertRectToDeviceSpace(context, r);
r.origin.x = floor(r.origin.x);
r.origin.y = floor(r.origin.y);
r.size.width = floor(r.size.width);
r.size.height = floor(r.size.height);
r = CGContextConvertRectToUserSpace(context, r);