2015-05-05 47 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