在iOS Sprite Kit中绘制平滑的圆形

19

我尝试在我的iOS SpriteKit项目中画一个圆,但是圆的边缘不够平滑。我希望能够得到像在Photoshop中绘制一样漂亮的圆(反锯齿)。我找到了几个类似的问题,但我的问题仍然存在。

-(id)initWithSize:(CGSize)size
{
    if (self = [super initWithSize:size])
    {
        self.backgroundColor = [SKColor whiteColor];
        self.scaleMode = SKSceneScaleModeAspectFill;
        self.size = CGSizeMake(640, 1136);

        CGRect circle = CGRectMake(100.0, 100.0, 80.0, 80.0);
        SKShapeNode *shapeNode = [[SKShapeNode alloc] init];
        shapeNode.path = [UIBezierPath bezierPathWithOvalInRect:circle].CGPath;
        shapeNode.fillColor = [SKColor redColor];
        shapeNode.lineWidth = 0;
        [self addChild:shapeNode];
    }
    return self;
}

这里的诀窍是什么?


1
我认为您需要给节点一个大于0的lineWidth值。抗锯齿默认已激活,但我认为只适用于线条,而不是填充。 - gabuh
3
顺便提一下,SKShapeNode 的抗锯齿效果不是很好,至少在我之前的测试中是这样的。因此,我最后创建了带有普通图像的 SKSpriteNodes。 - gabuh
@gabuh 谢谢 :). 将lineWidth设置为5就解决了。你应该将这个作为答案发布以获得积分 :). 谢谢! - xpepermint
2个回答

14

抗锯齿默认开启,但仅适用于线条,不适用于填充。

将 lineWidth 设置为大于 0 的数字,然后再试一次。


6
将抗锯齿属性设置为YES。
shapeNode.antialiased = YES;

填充颜色时,不会显示粗糙的边缘。
//shapeNode.fillColor = [SKColor redColor];
shapeNode.strokeColor =[SKColor redColor];
shapeNode.antialiased = YES;
shapeNode.lineWidth = 1;

现在切换抗锯齿属性的YES和NO选项。 您会注意到差异。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接