[XNA GameStudio] Bài 5 : Đưa một đoạn Text tiếng việt ra ngoài màn hình

Đăng bởi : 7/14/2014

Chào - Hôm nay mình sẽ hướng dẫn các bạn một bài khá đơn giản nhưng cũng rất cần thiết :)
Vì đơn giản vậy nên chúng ta vào vấn đề luôn nhé

I. Đưa một đoạn Text ra ngoài màn hình
1. Trước tiên chúng ta cần Load Font vào Content đã
- Chuột phải vào Project Content > Add > New Item như hình

- Trong cửa sổ New Item > Chọn Visual C# > SpriteFont. Cuối cùng ấn Add

>> Một File có định dạng .spritefont sẽ được tạo ra và có cấu trúc của XML file
ở đây bạn có thể chỉnh Font chữ, Size, Style....

OK giờ đến phần Code thôi.
Các bạn mở Game1.cs (mặc định là vậy) làm như sau :

Đầu tiên bạn phải khai báo một đối tượng SpriteFont đại diện cho Font mình dùng (hơi khó nói :D )
SpriteFont fontTohama;

Tiếp theo chúng ta cần Load Font này để sủ dụng
protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // Load Font
            // Phương thức Content.Load(string s) dùng để load một tài nguyên trong Project Content 
            // String s được xác định là tên file bỏ đi phần đuôi (extension) 
            fontTahoma = Content.Load("SpriteFont1");

            // TODO: use this.Content to load your game content here
        }

OK các thao tác chuẩn bị đã xong, giờ thì chỉ việc đưa dòng chữ ra ngoài màn hình Chúng ta sử dụng phương thức DrawString trong đối tượng spriteBatch
protected override void Draw(GameTime gameTime)
        {
            // Màu nền
            GraphicsDevice.Clear(Color.White);

            // Mọi thứ muốn Draw được cần gọi phương thức Begin() của đối tượng spriteBatch
            // và cuối cùng kết thúc bằng phương thức End
            spriteBatch.Begin();

            // Thư viện của XNA cung cấp cho ta 6 cách để đưa một đoạn Text ra ngoài màn hình
            // Sau đây mình dùng cách đơn giản nhất
            // DrawString(SpriteFont spriteFont, string NoiDung, Vector2 ToaDo, Color MauChu)
            spriteBatch.DrawString(fontTahoma, "Hello", new Vector2(500, 0), Color.Black);
            spriteBatch.DrawString(fontTahoma, "Draw them cai nua cho mau", new Vector2(100, 0), Color.Black);

            spriteBatch.End();

            base.Draw(gameTime);
        }
Chỉ vài thao tác như vậy chúng ta đã đưa ra màn hình một đoạn text rồi :)

 II. Sử dụng tiếng việt
XNA không hỗ trợ tiếng việt... nếu bạn cố gắng đưa một dòng tiếng việt để draw string thì ngay lập tức game bị bug.
Vậy sau đây mình sẽ hướng dẫn cách để có thể sử dụng tiếng việc trong Game (cái này có hướng dẫn trên mạng , thôi thì cứ copy về cho mọi người đỡ phải tìm :) )

- Bước 1 : Mở file .spritefont bạn đã add
- Bước 2 : Thay thế đoạn <CharacterRegion> ..... <\CharacterRegion> thành đoạn sau
<CharacterRegions>
      <CharacterRegion>
        <Start>&#32;</Start>
        <End>&#126;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#192;</Start>
        <End>&#195;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#200;</Start>
        <End>&#202;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#204;</Start>
        <End>&#205;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#210;</Start>
        <End>&#213;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#217;</Start>
        <End>&#218;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#221;</Start>
        <End>&#221;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#224;</Start>
        <End>&#227;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#232;</Start>
        <End>&#234;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#236;</Start>
        <End>&#237;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#242;</Start>
        <End>&#245;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#249;</Start>
        <End>&#250;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#253;</Start>
        <End>&#253;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#258;</Start>
        <End>&#259;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#272;</Start>
        <End>&#273;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#296;</Start>
        <End>&#297;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#360;</Start>
        <End>&#361;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#416;</Start>
        <End>&#417;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#431;</Start>
        <End>&#432;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#7840;</Start>
        <End>&#7924;</End>
      </CharacterRegion>
      <CharacterRegion>
        <Start>&#7926;</Start>
        <End>&#7929;</End>
      </CharacterRegion>
    </CharacterRegions>
Cuối cùng Ctrl + S để Save lại
Vậy là có thể viết đươc tiếng việt ngon lành rồi :)

-- OK Hôm nay vậy thôi. hẹn gặp lại !

Bài sau mình sẽ hướng dẫn các bạn các hiệu ứng và thao tác đối với một đoạn Text 
... Coming Son



Bình luận

Theo dõi các bài đăng | Theo dõi bài này

Nhận ngay 100$ cho VPS

Mua hàng ủng hộ page

Ủng hộ page

Nhãn

Code (45) Team Foundation Server (17) Database (14) News (14) product (13) toolbox (10) Linq (9) SoftDesign (8) XNA (6) API (5) Project (5) item (4)

- Bản quyền thuộc về Thư Viện WinForm - Giao diện: Metrominimalist - Thiết kế: Johanes Djogan -