ThaiGameDevX - Thai Game Developers eXchange Forums
26 September 2017, 04:11:48 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: หากมาครั้งแรก เชิญอ่าน ประกาศเจตนารมณ์ของ ThaiGameDevX และ กติกา ข้อตกลงในการใช้เว็บบอร์ด ครับ
 
   Home   Help Search Calendar Login Register  
Pages: [1]   Go Down
  Print  
Author Topic: ขอคำแนะนำหน่อยครับ เรื่องการ Render Font ใน XNA  (Read 2194 times)
0 Members and 1 Guest are viewing this topic.
centino
Approved Member
Jr. Member
*

จำนวน ชม/ไม่พอใจ: +13/-0
Offline Offline

Posts: 65


« on: 16 September 2011, 10:41:37 AM »

คือผมอยาก Render Font ให้มันเหมือน Texture น่ะครับ
โดยสามารถกำหนดจุดเริ่ม กำหนด Rect ในการ Render ได้
แบบนั้นมันทำได้รึเปล่าครับ เพื่อที่จะ Render ส่วนใดๆ ขนาดใดๆ ตามที่ต้องการได้
ไม่ทราบว่า XNA มีอะไรที่จัดการตรงนี้ได้บ้างครับ
หรือว่าต้องเอา Bitmap Font มาจัดการเอง ( โหลด แล้วก็เก็บเป็น Texture แต่ละตัวอักษร แล้วสร้าง Class DrawFontTexture ขึ้นมาเอง )

ตัว GUI ที่ผมทำติดเรื่องความสมบูรณ์ตรงนี้ที่ตะงิดใจมาก อยากทำให้มันสมบูรณ์
( ติดอีกเรื่องคือ Pixel Detection คือ จะไม่ใช้ สี่เหลี่ยม หรือวงกลมเท่านั้นในการ Detect Control 
แต่จะใช้ Pixel ที่มีสีค่า Alpha ไม่เท่ากับ 0 มา Detect แทน โดยจะสามารถเลือกได้ว่าจะใช้แบบไหน เพื่อไม่ให้เป็นภาระในการประมวลผลของ CPU มากเกิน
แต่ XNA เจ้ากรรมก็ Error ตรงนี้่ง่ายไปหน่อย)

เพราะปกติจะใช้ขนาดของ Rect ของ Texture/Area เป็นตัวเช็คว่า
ความยาวของข้อความเกินกว่าความกว้างที่กำหนดหรือไม่ ถ้าเกินก็ตัดตัวอักษรสุดท้ายที่เกินออก

ผมเองก็เซิจจนเบื่อละไม่มีใครทำตรงนี้ ไม่ทราบว่ามีท่านใดพอชี้ทางสว่างให้ได้บ้างครับ
ขอบคุณครับ
Logged

Thaina
Approved Member
Hero Member
*

จำนวน ชม/ไม่พอใจ: +29/-83
Offline Offline

Gender: Male
Posts: 810



« Reply #1 on: 18 September 2011, 03:25:33 AM »

ผมมีไอเดียที่กำลังจะเอาไปใช้น่ะนะ
คือใช้ฟังค์ชั่นของ Windows (ใน C# ก็ System.Drawing) เปลี่ยน String ให้กลายเป็น Bitmap
มันมีฟังค์ชั่นประมาณนี้อยู่แล้ว ใส่ Font ใส่ Size ใส่ Bold Italic ได้เลย
แล้วก็เอา Bitmap นั่นมาทำเป็น Texture

ถ้าผมจำไม่ผิด XNA ก็มีคำสั่ง SpriteBatch DrawText อยู่นะ ซึ่งผมเดาว่า WorkFlow มันทำงานแบบนี้แหละ
ก็จะเอามาใช้ใน OpenGL
Logged
centino
Approved Member
Jr. Member
*

จำนวน ชม/ไม่พอใจ: +13/-0
Offline Offline

Posts: 65


« Reply #2 on: 18 September 2011, 07:35:33 AM »

น่าสนใจครับ
เพิ่งนึกออกว่า พวกโปรแกรม gen  bitmap font ก็น่าจะทำประมาณนี้เหมือนกัน
แต่ยังไงก็ต้องสร้าง class มาจัดการการ render ข้อความอยู่ดี

ส่วนฟังก์ชั่น Drawtext มันวาดได้แต่ Font เต็มตัวอ่ะครับ
มันเลือกเฉพาะส่วนแบบ Texture ไม่ได้ อยาก render แค่ครึ่งตัวอักษร ก็ทำไม่ได้
ขอบคุณครับที่แนะนำ

เพิ่มเติมครับ ผมรู้ละว่าคงต้องใช้วิธีอื่น เพราะผมอยากได้ bimap font ที่มีลวดลาย มี effect บนนั้นด้วย
ยังไงคงต้องใช้วิธีอ่านจาก bitmap ที่สำเร็จรูปแล้วล่ะครับ
« Last Edit: 18 September 2011, 07:42:01 AM by centino » Logged

Pages: [1]   Go Up
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!