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



我在Mac OS X(而不是iOS)上处理矢量图形绘制,在Mac OS上处理矢量图元时,我遇到了像素之间的经典绘制,导致线条模糊等。我直接使用Core Graphics/Quartz在CGBitmapContext中进行操作。

我发现了这篇博客文章和引发它的堆栈溢出问题,我不想在每个坐标上加0.5,因为那篇文章声称这会在Retina屏幕上中断。

这篇文章提到使用后备存储坐标,但我在Core Graphics中找不到任何后备存储函数,更不用说仅针对CGBitmapContext了。

CGContextConvertPointToDeviceSpace()CGContextConvertPointToUserSpace()我都试过了,都没有用。

位图上下文已转换。

我有什么选择?谢谢

备选问题:有没有一种方法可以让我不使用点坐标,这样(4,4)总是(4,4)而不是(3.5,3.5)或其他奇怪的东西?这都是内存中的图像,所以DPI还不是什么大问题。谢谢

这对我很有效,直接从手册开始。希望它能帮助到别人:)

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);

最新更新