曾今一段时间热心的想学习游戏编程,于是研究起了SDL,第一篇文章《SDL学习笔记一 图片和字体显示》是07年7月份写的,至此之后,就停了下来。

最近的一段时间有热心起来,拾起以前的代码,继续研究!写《SDL学习笔记一 图片和字体显示》一文时,我没有找到中文的显示方法,今天参照《SDL & Object Pascal (Delphi) [2] 显示中文字符》一文,做了个小鬼搬家,也算重新学习的开始吧!

SDL学习笔记二 中文字体的显示
下面是代码,同样使用Delphi7,配合JEDI-SDL:

 1SDL学习笔记二 中文字体的显示program Project1;
 2SDL学习笔记二 中文字体的显示
 3SDL学习笔记二 中文字体的显示uses
 4SDL学习笔记二 中文字体的显示    SysUtils,
 5SDL学习笔记二 中文字体的显示    SDL,
 6SDL学习笔记二 中文字体的显示    SDL_TTF;
 7SDL学习笔记二 中文字体的显示
 8SDL学习笔记二 中文字体的显示var
 9SDL学习笔记二 中文字体的显示    screen:PSDL_Surface;
10SDL学习笔记二 中文字体的显示    event:TSDL_Event;
11SDL学习笔记二 中文字体的显示    font: PTTF_Font;
12SDL学习笔记二 中文字体的显示    outtxt: WideString;
13SDL学习笔记二 中文字体的显示procedure draw_unicode_text(word: WideString ; x_pos,y_pos : Integer; 
14SDL学习笔记二 中文字体的显示    color :Cardinal);
15SDL学习笔记二 中文字体的显示var
16SDL学习笔记二 中文字体的显示    text : PSDL_Surface;
17SDL学习笔记二 中文字体的显示    dest : TSDL_Rect;
18SDL学习笔记二 中文字体的显示    clr : TSDL_color;
19SDL学习笔记二 中文字体的显示begin
20SDL学习笔记二 中文字体的显示    clr.r := Color and $FF;
21SDL学习笔记二 中文字体的显示    clr.g := (Color shr 8and $FF;
22SDL学习笔记二 中文字体的显示    clr.b := (Color shr 16and $FF;
23SDL学习笔记二 中文字体的显示    // 用到了两个全局对象screen和font
24SDL学习笔记二 中文字体的显示    text:= TTF_RenderUNICODE_Blended(font,@word[1],clr);
25SDL学习笔记二 中文字体的显示    dest.x:=x_pos;
26SDL学习笔记二 中文字体的显示    dest.y:=y_pos;
27SDL学习笔记二 中文字体的显示    SDL_BlitSurface(text,nil,screen,@dest);
28SDL学习笔记二 中文字体的显示    SDL_FreeSurface(text);
29SDL学习笔记二 中文字体的显示end;
30SDL学习笔记二 中文字体的显示begin
31SDL学习笔记二 中文字体的显示    if SDL_Init(SDL_INIT_VIDEO)< 0 then Exit;
32SDL学习笔记二 中文字体的显示    if TTF_Init()<0 then Exit;
33SDL学习笔记二 中文字体的显示    SDL_WM_SetCaption('Delphi SDL Demo',nil);
34SDL学习笔记二 中文字体的显示    screen:=SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
35SDL学习笔记二 中文字体的显示    if (screen=nilthen
36SDL学习笔记二 中文字体的显示    begin
37SDL学习笔记二 中文字体的显示    SDL_Quit;
38SDL学习笔记二 中文字体的显示    exit;
39SDL学习笔记二 中文字体的显示    end;
40SDL学习笔记二 中文字体的显示    font:=TTF_OpenFont('msyh.ttf',24);
41SDL学习笔记二 中文字体的显示    outtxt:='JEDI-SDL 演示程序';
42SDL学习笔记二 中文字体的显示    draw_unicode_text(outtxt,220,160,$0000FF);
43SDL学习笔记二 中文字体的显示    draw_unicode_text('SDL中文输出测试',220,200,$336699);
44SDL学习笔记二 中文字体的显示    draw_unicode_text('Code By Shaoyun',220,240,$00FF00);
45SDL学习笔记二 中文字体的显示    SDL_Flip(screen);
46SDL学习笔记二 中文字体的显示    while SDL_PollEvent(@event)>=0 do
47SDL学习笔记二 中文字体的显示    begin
48SDL学习笔记二 中文字体的显示    case event.typeof
49SDL学习笔记二 中文字体的显示        SDL_QUITEV: Break;
50SDL学习笔记二 中文字体的显示        SDL_KEYDOWN:
51SDL学习笔记二 中文字体的显示        case event.key.keysym.sym of
52SDL学习笔记二 中文字体的显示            SDLK_ESCAPE: Break;
53SDL学习笔记二 中文字体的显示        end;
54SDL学习笔记二 中文字体的显示    end;
55SDL学习笔记二 中文字体的显示    end;
56SDL学习笔记二 中文字体的显示    TTF_CloseFont(font);
57SDL学习笔记二 中文字体的显示    TTF_Quit;
58SDL学习笔记二 中文字体的显示    SDL_Quit;
59SDL学习笔记二 中文字体的显示    exit;
60SDL学习笔记二 中文字体的显示end.

相关文章: