我想绘制平铺图像,然后使用通常的平移和缩放手势对其进行转换。将我带到这里的问题是,每当我对大量小数位进行缩放转换时,瓷砖中间会出现一条细线像素(1 或 2)。我设法隔离了这样的问题:
CGContextSaveGState(UIGraphicsGetCurrentContext());
CGContextSetFillColor(UIGraphicsGetCurrentContext(), CGColorGetComponents([UIColor redColor].CGColor));
CGContextFillRect(UIGraphicsGetCurrentContext(), rect);//rect from drawRect:
float scale = 0.7;
CGContextScaleCTM(UIGraphicsGetCurrentContext(), scale, scale);
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(50, 50, 100, 100), testImage);
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(150, 50, 100, 100), testImage);
CGContextRestoreGState(UIGraphicsGetCurrentContext());
使用 0.7 比例尺,这两个图像显示正确平铺:
使用 0.777777 比例(将第 6 行更改为“float scale = 0.777777;”),出现视觉伪影:
有没有办法避免这个问题?这发生在 CGImage、CGLayer 和矩形等原始形式中。它也发生在 MacOSx 上。
谢谢您的帮助!
编辑:补充说这也发生在原始形式上,如 CGContextFillRect
edit2:它也发生在 MacOSx 上!