曾今一段时间热心的想学习游戏编程于是研究起了SDL第一篇文章《SDL学习笔记一 图片和字体显示》是年月份写的至此之后就停了下来 最近的一段时间有热心起来拾起以前的代码继续研究!写《SDL学习笔记一 图片和字体显示》一文时我没有找到中文的显示方法今天参照《SDL & Object Pascal (Delphi) [] 显示中文字符》一文做了个小鬼搬家也算重新学习的开始吧! 下面是代码同样使用Delphi配合JEDISDL program Project;
uses SysUtils SDL SDL_TTF;
var screen:PSDL_Surface; event:TSDL_Event; font: PTTF_Font; outtxt: WideString; procedure draw_unicode_text(word: WideString ; x_posy_pos : Integer; color :Cardinal); var text : PSDL_Surface; dest : TSDL_Rect; clr : TSDL_color; begin clrr := Color and $FF; clrg := (Color shr ) and $FF; clrb := (Color shr ) and $FF; // 用到了两个全局对象screen和font text:= TTF_RenderUNICODE_Blended(font@word[]clr); destx:=x_pos; desty:=y_pos; SDL_BlitSurface(textnilscreen@dest); SDL_FreeSurface(text); end; begin if SDL_Init(SDL_INIT_VIDEO)< then Exit; if TTF_Init()< then Exit; SDL_WM_SetCaption(Delphi SDL Demonil); screen:=SDL_SetVideoMode(SDL_SWSURFACE); if (screen=nil) then begin SDL_Quit; exit; end; font:=TTF_OpenFont(f); outtxt:=JEDISDL 演示程序; draw_unicode_text(outtxt$FF); draw_unicode_text(SDL中文输出测试$); draw_unicode_text(Code By Shaoyun$FF); SDL_Flip(screen); while SDL_PollEvent(@event)>= do begin case eventtype_ of SDL_QUITEV: Break; SDL_KEYDOWN: case eventkeykeysymsym of SDLK_ESCAPE: Break; end; end; end; TTF_CloseFont(font); TTF_Quit; SDL_Quit; exit; end |