2011-09-04 5 views
3

하스켈의 SDL 바인딩을 사용하여 표면에 스프라이트를 블릿하고 싶지만 스프라이트의 표면에 투명 색상을 정의하는 방법을 모르겠습니다. 나는 하스켈에서 동일한을 달성 할 수있는 방법Haskell SDL Binding : 스프라이트를 투명한 색상으로 블 리팅하는 방법은 무엇입니까?

ball.Transparent<-true 
ball.TransparentColor<-Color.FromArgb (0, 255, 0) 

어떤 생각하십시오 Sdldotnet - 도서관에서

module Main where 

import Graphics.UI.SDL as SDL 
import Graphics.UI.SDL.Image as SDLi 

main = do 
    SDL.init [SDL.InitVideo] 
    screen <- SDL.setVideoMode 500 500 32 [] 
    SDL.fillRect screen Nothing (SDL.Pixel 0x00FFFFFF) 

    ball <- SDLi.load "30ball.png" 

    SDL.blitSurface ball Nothing screen Nothing 

    SDL.flip screen 

    delay 2000 
    SDL.quit 

내가 좋아하는 뭔가 의 속성을 설정할 수 있습니다, 다음은 지금까지 코드는 SDL 바인딩?

module Main where 

import Graphics.UI.SDL as SDL 
import Graphics.UI.SDL.Image as SDLi 

main = do 
    SDL.init [SDL.InitVideo] 
    screen <- SDL.setVideoMode 500 500 32 [] 
    SDL.fillRect screen Nothing (SDL.Pixel 0x00FFFFFF) 

    ball <- SDLi.load "30ball.bmp" 
    b2 <- convertSurface ball (surfaceGetPixelFormat screen) [] 

    t <- mapRGB (surfaceGetPixelFormat b2) 0 255 0 

    setColorKey b2 [SrcColorKey, RLEAccel] t 

    SDL.blitSurface b2 Nothing screen Nothing 

    SDL.flip screen 

    delay 2000 
    SDL.quit 

답변

3

setColorKey을 시도해보십시오 여기

... here is the sprite...

는 Banthar의 조언을 구현 한 후 작업 버전입니다. 자세한 내용은 here을 참조하십시오. PNG를 사용하는 경우 가장 간단한 방법은 알파 채널을 사용하는 것입니다.

+0

고마워요! 그것은 setColorKey를 추가하고 표면을 변환 한 후에 작동했습니다! – martingw

관련 문제