Nsimage 在矩形中绘制但图像模糊?

Nsimage draw in rect but the image is blurry?

设计师给我这样的图

但是当我用drawInRect API在context中绘制图片时,图片是这样的

矩形的大小正好是image.And图像的大小@1x和@2x。

区别很明显,画面模糊,图片右边有一条灰线,我的imac是retina分辨率

============================================= === 我找到原因了,

[self.headLeftImage drawInRect:NSMakeRect(100,
                                        100,
                                        self.headLeftImage.size.width,
                                        self.headLeftImage.size.height)];




CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
CGContextSaveGState(context);
CGContextTranslateCTM(context, self.center.x , self.center.y);

[self.headLeftImage drawInRect:NSMakeRect(100,
                                        100,
                                        self.headLeftImage.size.width,
                                        self.headLeftImage.size.height)];
CGContextRestoreGState(context);

并且第一次绘制时图像不会模糊,但翻译后图像会模糊。就像图片一样:

问题是您将上下文转换为 non-integral 像素位置。然后,抽奖将尊重您将图像放在 non-integral 位置的请求,这会导致它成为 anti-aliased 并且部分像素会着色。

您应该将中心点转换为设备 space,integral-ize 它(例如通过使用 floor()),然后再将其转换回来。使用 CGContextConvertPointToDeviceSpace()CGContextConvertPointToUserSpace() 进行转换。这对 Retina 和 non-Retina 显示器来说是正确的。