⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 游戏程式设计指南(hoho篇) lesson5.htm

📁 游戏程式设计指南
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0045)http://www.gameres.com/HoHo/Guide/Lesson5.htm -->
<HTML><HEAD><TITLE>游戏程式设计指南(HoHo篇) Lesson5 - GameRes.com</TITLE>
<META content=zh-cn http-equiv=Content-Language>
<META content="MSHTML 5.00.3700.6699" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<META content="text/html; charset=gb2312" http-equiv=Content-Type></HEAD>
<BODY aLink=#ff9900 bgColor=#000000 leftMargin=0 link=#ff9900 text=#ffffff 
topMargin=0 vLink=#ff9900><FONT face=Arial>
<TABLE border=0 borderColor=#111111 cellPadding=0 cellSpacing=0 id=AutoNumber1 
style="BORDER-COLLAPSE: collapse" width="100%">
  <TBODY>
  <TR>
    <TD width="100%"><A href="http://www.gameres.com/" 
      title="中国游戏开发技术资源网 - GameRes.com"><IMG border=0 height=47 
      src="游戏程式设计指南(HoHo篇) Lesson5.files/titlesmall.jpg" width=200></A></TD></TR>
  <TR>
    <TD width="100%"> </TD></TR>
  <TR>
    <TD width="100%">
      <DIV align=center>
      <CENTER>
      <TABLE border=0 cellPadding=0 cellSpacing=0 id=AutoNumber2 
      style="BORDER-COLLAPSE: collapse" width="85%">
        <TBODY>
        <TR>
          <TD bgColor=#151631 width="100%">
            <P align=right><FONT size=1>林德辉(Sea_Bug)&nbsp;&nbsp; 
        </FONT></P></TD></TR>
        <TR>
          <TD width="100%">
            <P align=center><FONT size=1>&nbsp;</FONT><BR><FONT 
            color=#ffffee><B>游戏程式设计指南(HoHo篇)<BR>Lesson&nbsp;5 —&nbsp; 
            字体绘制篇</B></FONT></P></TD></TR>
        <TR>
          <TD width="100%"> </TD></TR>
        <TR>
          <TD width="100%"><FONT size=4><B>序</B></FONT><FONT 
            size=2><BR><BR>  图像作为游戏的主要输出途径,其中不可或缺的就是文字,不管是作为游戏中使用,或者作为我们程式的调试手段,文字的输出表示是相当重要的,本节就是要给大家介绍如何在HoHo游戏程序中绘制文字;HoHo为大家提供了两种绘制方式,一种是通过Windows的GDI来进行文字绘制,另外一种则是通过HoHo自己的处理方式来进行文字绘制,当然,HoHo自处理的方式在性能方面比GDI的处理方式高出许多,同时,HoHo也提供了一个字体生成器,可以很方面的制作我们有戏当中所需要的字体格式。<BR><BR>  注:HoHo的自处理字体目前只支持等宽高的字体。<BR><BR><BR></FONT><B>目录:</B><FONT 
            size=2><BR></FONT>  <A 
            href="http://www.gameres.com/HoHo/Guide/Lesson5.htm#使用GDI绘制文字" 
            target=_self>使用GDI绘制文字</A><BR>  <A 
            href="http://www.gameres.com/HoHo/Guide/Lesson5.htm#使用HoHo自处理文字" 
            target=_self>使用HoHo自处理文字</A><FONT face=Arial><BR>  <A 
            href="http://www.gameres.com/HoHo/Guide/Lesson5.htm#HoHo字体生成器使用" 
            target=_self>HoHo字体生成器使用</A><FONT face=Arial 
            size=2><BR><BR><BR><BR></FONT><B><A 
            name=使用GDI绘制文字>使用GDI绘制文字</A></B><FONT face=Arial 
            size=2><BR><BR>  首先,我们来看看如何使用Windows的GDI来进行文字绘制,大家都知道,Windows为我们提供了强大的文字绘制功能,很幸运的是,DirectDraw继承了这些,在DirectDraw的表面(Surfce)可以看作一个可供系统GDI绘制的缓存,当然,这里我们不会深入说明如何处理,HoHo已经把这些东西封装好了,好了,让我们来看看如何使用。<BR><BR>  第一步初始化,不用多说,声明操作句柄,代码片断如下:<BR><BR></FONT></FONT></FONT><FONT 
            color=#99ccff face=宋体 size=2>    HFONT g_hFont = NULL;</FONT><FONT 
            face=Arial><FONT face=Arial size=2><BR> </FONT><FONT face=Arial>
            <DIV align=center>
            <CENTER>
            <TABLE border=1 borderColor=#002846 cellPadding=0 cellSpacing=0 
            id=AutoNumber8 style="BORDER-COLLAPSE: collapse" width="80%">
              <TBODY>
              <TR>
                <TD align=middle bgColor=#001824 width="100%"><FONT 
                  size=2>声明GDI字体句柄</FONT></TD></TR>
              <TR>
                <TD align=middle width="100%"><FONT size=1>&nbsp;<BR><IMG 
                  border=0 height=354 
                  src="游戏程式设计指南(HoHo篇) Lesson5.files/Lesson5_2.gif" 
                  width=365><BR> </FONT></TD></TR></TBODY></TABLE></CENTER></DIV></FONT>
            <P><FONT size=2>声明完之后,</FONT><FONT face=Arial 
            size=2>我们必须对它进行初始化操作,我们通过调用系统API函数来进行Windows字体句柄创建,代码片断如下:<BR><BR></FONT></FONT><FONT 
            color=#99ccff face=宋体 size=2>    g_hFont = CreateFont(12, 0, 0, 0, 
            FW_NORMAL, FALSE, FALSE, FALSE, GB2312_CHARSET, OUT_DEFAULT_PRECIS, 
            CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, 
            "宋体");</FONT></P><FONT face=Arial>
            <DIV align=center>
            <CENTER>
            <TABLE border=1 borderColor=#002846 cellPadding=0 cellSpacing=0 
            id=AutoNumber9 style="BORDER-COLLAPSE: collapse" width="80%">
              <TBODY>
              <TR>
                <TD align=middle bgColor=#001824 width="100%"><FONT 
                  size=2>初始化GDI字体</FONT></TD></TR>
              <TR>
                <TD align=middle width="100%"><FONT size=1>&nbsp;<BR><IMG 
                  border=0 height=229 
                  src="游戏程式设计指南(HoHo篇) Lesson5.files/Lesson5_4.gif" 
                  width=496><BR> </FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
            <P><FONT face=Arial 
            size=2>我们可以看到,这里我们创建了一个12点阵的字体大小,当然,这些复杂的参数在MSDN可以查询到,这部分数据Windows的操作部分,我们不对此进行深入说明,有兴趣的朋友请参看MSDN。<BR><BR>  创建好GDI字体后,我们可以通过调用HoHo的图形函数DrawText()来进行字体绘制,代码示例如下:<BR><BR></FONT></FONT><FONT 
            color=#99ccff face=宋体 size=2>    GetGraphics()-&gt;DrawText( 
            SCREENBUFFER, 30, 30, g_hFont, "GDI字体 Test 测试", RGB2Hi(255,255,255) 
            );</FONT></P><FONT face=Arial>
            <DIV align=center>
            <CENTER>
            <TABLE border=1 borderColor=#002846 cellPadding=0 cellSpacing=0 
            id=AutoNumber10 style="BORDER-COLLAPSE: collapse" width="80%">
              <TBODY>
              <TR>
                <TD align=middle bgColor=#001824 width="100%"><FONT 
                  size=2>绘制GDI字体</FONT></TD></TR>
              <TR>
                <TD align=middle width="100%"><FONT size=1>&nbsp;<BR><IMG 
                  border=0 height=204 
                  src="游戏程式设计指南(HoHo篇) Lesson5.files/Lesson5_6.gif" 
                  width=657><BR> </FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
            <P><FONT face=Arial 
            size=2>这样就能完成GDI字体的绘制工作,很easy吧!:)<BR><BR>  补充说一下,由于GDI字体绘制的机制与HoHo有所差别,故此函数在实际应用中操作比较消耗速度性能。<BR><BR><BR><BR></FONT><B><A 
            name=使用HoHo自处理文字>使用HoHo自处理文字</A></B><FONT 
            size=2><BR><BR>  接下来让我们看看HoHo自处理字体的使用,为什么要使用HoHo的自处理字体?因为它能够给你带来绘制效率,同时可以给你带来字体的附加效果,如:字体的边缘Alpha混合等。<BR><BR>  HoHo字体的初始化和GDI字体一样,我们首先声明操作句柄,代码片段如下:<BR><BR></FONT></FONT><FONT 
            color=#99ccff face=宋体 size=2>    LP_FONT g_pHoHoFont = 
            NULL;</FONT><FONT face=宋体></P></FONT><FONT face=Arial>
            <DIV align=center>
            <CENTER>
            <TABLE border=1 borderColor=#002846 cellPadding=0 cellSpacing=0 
            id=AutoNumber11 style="BORDER-COLLAPSE: collapse" width="80%">
              <TBODY>
              <TR>
                <TD align=middle bgColor=#001824 width="100%"><FONT 
                  size=2>HoHo字体声明</FONT></TD></TR>
              <TR>
                <TD align=middle width="100%"><FONT size=1>&nbsp;<BR><IMG 
                  border=0 height=354 
                  src="游戏程式设计指南(HoHo篇) Lesson5.files/Lesson5_3.gif" 
                  width=365><BR> </FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
            <P><FONT 
            size=2>声明完后,我们一样进行字体设备的创建,不过不同于GDI的是,HoHo字体是从自己的字体库文件中提取出来,而并非来源于Windows系统,这样就能有效的避免不同Windows导致的字体错乱情况,这个情况在繁体版本和简体版本的Windows中尤为明显。让我们看看创建HoHo字体的代码片段:<BR><BR></FONT></FONT><FONT 
            color=#99ccff face=宋体 size=2>    g_pHoHoFont = msCreateFont( 
            "Font12.dat" );</FONT><FONT face=宋体></P></FONT><FONT face=Arial>
            <DIV align=center>
            <CENTER>
            <TABLE border=1 borderColor=#002846 cellPadding=0 cellSpacing=0 
            id=AutoNumber12 style="BORDER-COLLAPSE: collapse" width="80%">
              <TBODY>
              <TR>
                <TD align=middle bgColor=#001824 width="100%"><FONT 
                  size=2>HoHo字体的创建</FONT></TD></TR>
              <TR>
                <TD align=middle width="100%"><FONT size=1>&nbsp;<BR><IMG 
                  border=0 height=229 
                  src="游戏程式设计指南(HoHo篇) Lesson5.files/Lesson5_5.gif" 
                  width=496><BR> </FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
            <P><FONT 
            size=2>就这么简单的一句就能将字体从字库文件中创建出来,接下来我们看看如何绘制,代码片段如下:<BR><BR></FONT></FONT><FONT 
            color=#99ccff face=宋体 size=2>    GetGraphics()-&gt;DrawFont( 
            SCREENBUFFER, 30, 60, g_pHoHoFont, RGB2Hi(255,255,255), "HOHO字体 Test 
            测试" );</FONT><FONT face=宋体></P></FONT><FONT face=Arial>
            <DIV align=center>
            <CENTER>
            <TABLE border=1 borderColor=#002846 cellPadding=0 cellSpacing=0 
            id=AutoNumber13 style="BORDER-COLLAPSE: collapse" width="80%">
              <TBODY>
              <TR>
                <TD align=middle bgColor=#001824 width="100%"><FONT 
                  size=2>HoHo字体绘制</FONT></TD></TR>
              <TR>
                <TD align=middle width="100%"><FONT size=1>&nbsp;<BR><IMG 
                  border=0 height=204 
                  src="游戏程式设计指南(HoHo篇) Lesson5.files/Lesson5_7.gif" 
                  width=657><BR> </FONT></TD></TR></TBODY></TABLE></CENTER></DIV>
            <P><FONT 
            size=2>看看,是不是和GDI的字体绘制方式类似,问题就那么简单。<BR><BR>  我们看看我们程序的执行结果:<BR><BR>    <IMG 
            border=0 height=275 
            src="游戏程式设计指南(HoHo篇) Lesson5.files/Lesson5_8.jpg" 
            width=319><BR><BR>看到HoHo字体还带着轮廓线了吗?这个就是HoHo自处理字体的功能,只要字库保存了轮廓线数据,我们的字体就能进行轮廓线绘制,当然还能进行轮廓Alpha处理,这里我简要的说明下一一些关于HoHo自处理字体的参数,看看字体的结构:<BR><BR></FONT></FONT><FONT 
            color=#99ccff face=宋体 size=2>struct HOHO_API 
            tagFont<BR>{<BR>&nbsp;&nbsp;&nbsp; int nStyle;</FONT><FONT 
            color=#99ccff face=宋体 size=2>&nbsp;&nbsp;&nbsp; </FONT><FONT 
            color=#99ccff face=宋体 size=2>&nbsp;&nbsp;&nbsp; </FONT><FONT 
            color=#99ccff face=宋体 size=2>&nbsp;&nbsp;&nbsp; </FONT><FONT 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -