让HGE支持中文(1) - HGE中文显示

 

HGE是不款不错的2D引擎渲染引擎...为什么这样说呢...

HGE目前没有物理,不过官方已经公布下一个版本将会有物理引擎进入.

因此该版本将会是一个非常好的2D引擎代表作..期待ing...

不过HGE是不支持中文的...这的确比较麻烦...

有没有解决办法呢?

答案是肯定的...

下面我就有来讲讲怎么让HGE支持中文...

我们先来搞定中文的显示,.再来搞定中文的输入.(输入将在下一篇文章上讲到)

先把我将"微妙的平衡"的一份代码弄下来改了一下.

hgefontc.h文件如下:

/* *****************************************************
原作者:微妙的平衡
修改者:sf.tk

修改日期:2007-06-28
修改者  :Showlong
修改内容:去掉format的bug.
         不需要处理多张字符纹理.
         修改数据类型的不平衡.
         修正SetBlendMode函数内部错误
         填加获取串指定个数的长度
         填加渲染长度截取
***************************************************
*/

#pragma  once

#include 
" hge.h "
#include 
" hgesprite.h "

#include 
< iostream >

class  hgeFontCN
{
    
enum  FONTCN_DATA
    {
        VALUE_FIX    
=      1 ,
        HZ_H_MAX    
=      87   +  VALUE_FIX, //  0xA1~0xF7    汉字编码范围高位(+1是给普通字母与标点符号留位置)
        HZ_W_MAX     =      95 ,                //  0xA0~0xFE    汉字编码范围底位
        HZ_H_FIX     =      0xA1 ,
        HZ_W_FIX    
=      0xA0 ,
        HZ_H_END    
=      0xF7 ,
        HZ_W_END    
=      0xFE ,
        ASCII_FIX    
=      0x20 ,
        ASCII_END    
=      0x7f ,
        ASCII_W        
=      6
    };

    
struct  FontCN_Head
    {
        
char      strHead[ 32 ];
        
char      ImgFileNum;     // 字模文件数
         char      firstImgFileName[ 40 ];  // 第一个字模文件名
        DWORD     dwStringCol;
        DWORD     dwStringRow;
        DWORD     dwFontWidth;
        DWORD     dwFontHeight;
    
public :
        
void  SetData( char   * head,  char  num,  const   char *  firstImg, DWORD nCol, DWORD nRow, DWORD nFWidth, DWORD nFHeight);
    };

    
struct  FontCN_Frame
    {
        BYTE     HZ[
2 ];
        BYTE     fileIdx; 
// 所属的字模文件
        WORD     dwFontX;
        WORD     dwFontY;
    
public :
        
void  SetData(BYTE h, BYTE l, BYTE idx, WORD fx, WORD fy);
    };

public :
    hgeFontCN(
const   char   * filename);     // 根据字体文件创建
     ~ hgeFontCN( void );

    
void         Render( float  x,  float  y,  const   char   * string int  cutlen  =   0 );         // 绘制字符串
     void         printf( float  x,  float  y,  const   char   * format, ...);     // 绘制格式字符串

    
void         SetColor(DWORD col){m_allSprite -> SetColor(col);}             // 设置字体颜色
     void         SetZ( float  z){m_allSprite -> SetZ(z);}                         // 设置Z缓冲
     void         SetBlendMode( int  blend){m_allSprite -> SetBlendMode(blend);}     // 设置混和模式
     void         SetScale( float  scale) {fScale = scale;}                 // 设置比例
     void         SetRotation( float  rot) {fRot = rot;}                     // 设置旋转角度
     void         SetTracking( float  tracking) {fTracking = tracking;}     // 设置轨迹

    DWORD        GetColor() 
const  { return
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值