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
Mã:
using XNAGifAnimationLibrary;
tạo đối tượng GifAnimation
Mã:
private GifAnimation gif;
trong hàm loadcontent
Mã:
protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); this.gif = Content.Load<GifAnimation>("Images\\explode"); }
trong hàm update
Mã:
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
Mã:
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
chúc các bạn vui vẻ
View more random threads:
Dưới ánh nắng mặt trời đang lên, những đống pallet nhựa An Giang trải dài mênh mông như những bức tranh tự nhiên đầy sắc màu. Mỗi chiếc pallet nhựa không chỉ là một vật dụng thông thường mà còn là...
Pallet nhựa An Giang giao hàng...