[XNA]Load ảnh động (gif) vào game với XNA

Posted: 06/05/2011 in XNA Game
Tags:

chào các bạn

hôm nay mình sẽ hướng dẫn các bạn làm thế nào để load ảnh động (gif) vào XNA

mở đầu : như các bạn đã biết , mặc định XNA chỉ cho load ảnh tĩnh vào game dưới dạng 1 texture2D mà không cho load ảnh động . đơn giản là ảnh gif có nhiều frame và cấu trúc khác với ảnh tĩnh nên chúng không thể đứng chung đc. XNA framework cũng chẳng có thư viện mở rộng nào để cho phép load ảnh động (gif) cả.

may mắn thay trong một lần tình cờ lướt google, zstar mò được 1 thư viện cho phép làm việc này. thư viện đó tên là XNAGifAnimation do 1 người tên là Mahdi Khodadadi Fard xây dựng. thư viện mình đính kèm ở dưới. bao gồm 2 file XNAGifAnimationLibrary.dll vs XNAGifAnimationLibrary.Pipeline.dll

thân bài
chú ý : thư viện mình đính kèm ở dưới chỉ dùng với XNA 3.0

mình sẽ hướng dẫn các bạn sử dụng chúng như thế nào

bước 1 :
-các bạn tạo 1 project XNA 3.0
-các bạn add 2 file thư viện (đính kèm ở dưới)tương ứng vào reference của project và reference của Content (xem hình dưới sẽ rõ)
-add 1 ảnh gif bất kì vào Content. tôi ví dụ là add “explode.gif”

bước 2: code
-trong game1.cs
using XNAGifAnimationLibrary;

tạo đối tượng GifAnimation

private GifAnimation gif;

trong hàm loadcontent

protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
this.gif = Content.Load<GifAnimation>("Images\\explode");
}

trong hàm update

protected override void Update(GameTime gameTime)
{if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
this.gif.Update(gameTime.ElapsedGameTime.Ticks);
base.Update(gameTime);
}

trong hàm draw

protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
spriteBatch.Draw(this.gif.GetTexture(),new Vector2(),Color.White);
spriteBatch.End();
base.Draw(gameTime);
}

kết quả :

kết luận
-mỗi phiên bản của thư viện này chỉ dùng đc cho 1 version của XNA. như tôi attach ở dưới là dùng với XNA 3.0
-có thư viện này tôi có thể load ảnh gif thoải mái như: ảnh gif minh họa 1 vụ nổ mà tôi ví dụ ở trên.giúp tiết kiệm khá nhiều thời gian để minh họa 1 vụ nổ và tận dụng được ảnh gif có sẵn
-ko nên dùng quá nhiều ảnh gif trong game. sẽ làm chậm game

download thư viện : http://www.4shared.com/file/C91_LeTa/XNA_gif_30.html

Comments
  1. zstar says:

    mỗi phiên bản của thư viện này chỉ dùng được cho 1 phiên bản XNA

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s