2015-05-05 17 views
4

缩小图像时,圆周的周边会变得像素化。使用SKSpriteNode进行缩放时的像素化圆形

嵌入的圆形图像的半径为100像素。 (圆圈是白色的,所以点击空白处,你会看到图像。)使用SpriteKit缩小会导致边框变得非常模糊和像素化。如何在SpriteKit中放大/缩小并保留清晰的边框?我们的目标是为一个圆圈使用一个基本图像,并用这个基本图像创建不同大小的圆形图像。

White circle

// Create dot 
    let dot = SKSpriteNode(imageNamed: "dot50") 

    // Position dot 
    dot.position = scenePoint 

    // Size dot 
    let scale = radius/MasterDotRadius 
    println("Dot size and scale: \(radius) and \(scale)") 
    dot.setScale(scale) 

    dot.texture!.filteringMode = .Nearest 

回答

2

看来你应该使用SKTextureFilteringLinear而不是SKTextureFilteringNearest

SKTextureFilteringNearest:

每个像素都用在纹理的最近点绘制。这种模式 更快,但结果往往像素化。

SKTextureFilteringLinear:

每个像素是通过在 纹理使用多个纹理像素的线性过滤器抽吸。这种模式可以产生更高质量的结果,但速度可能更慢

您可以使用SKShapeNode,它在缩放动画时会更好,但最终结果(当点缩放到某个值时)几乎像使用SKSpriteNode和图像时会像素化。

+0

这是默认的过滤模式,它也是像素化的。最近才试过。线性证明模糊。 – Crashalot

+0

您应该知道,在缩放位图时,您总会得到一定百分比的人工制品。也许你可以尝试SKShapeNode,但我个人不喜欢它们,因为它们不能像SKSpriteNode-s那样在单次绘制调用中绘制。 – Whirlwind

+0

是的,谢谢。但是你推荐什么? – Crashalot