注意:請使用支援中文的ttf字型檔。
5.1:構建可以正確顯示中文的sdl_ttf函式
世界終於又充滿了光明!任何事情都是有答案的,不知道僅僅是因為我們還沒有找到。解決了以上一系列問題,我們終於可以不依賴mfc,完全使用自由開源的資源,讓sdl顯示中文了!我們通過ttf_renderunicode_***()來構建這些函式:
//filename: font.h
#ifndef font_h_
#define
font_h_
#include
"gb2312_to_unicode.h
"#include
"sdl/sdl_ttf.h
"sdl_su***ce
*myttf_renderstring_blended(ttf_font
*font,
const
std::
string
&str, sdl_color fg);
sdl_su***ce
*myttf_renderstring_solid(ttf_font
*font,
const
std::
string
&str, sdl_color fg);
sdl_su***ce
*myttf_renderstring_shaded(ttf_font
*font,
const
std::
string
&str, sdl_color fg, sdl_color bg);
#endif
三種顯示模式的實現檔案:
#include
"font.h
"sdl_su***ce
*myttf_renderstring_blended(ttf_font
*font,
const
std::
string
&str, sdl_color fg)
sdl_su***ce
*myttf_renderstring_solid(ttf_font
*font,
const
std::
string
&str, sdl_color fg)
sdl_su***ce
*myttf_renderstring_shaded(ttf_font
*font,
const
std::
string
&str, sdl_color fg, sdl_color bg)
5.2:修改displaysu***ce的類方法
其它介面都是不需要改動的,我們僅僅把類方法中,原來用於構建文字面的函式換成我們自己的函式就可以了。當然,先把這些函式#include進來:
#include
"su***ceclass.h
"#include
"font.h"//
displaysu***ce::displaysu***ce(
const
std::
string
&msg_name,
const
std::
string
&message,
const
screensu***ce
&screen,
uint8 r, uint8 g , uint8 b,
intttf_size,
const
std::
string
&ttf_filename):
filename(msg_name)
5.3:stringdata在主程式中的呼叫
最後,我們演示一下stringdata在主程式中的呼叫方法。
//must #include "string_data.h"
//load a textsu***ce
stringdata mydata;
const
std::
string
uinfo
=mydata[0];
const
std::
string
dinfo
=mydata[1];
const
std::
string
linfo
=mydata[2];
const
std::
string
rinfo
=mydata[3];
const
std::
string
oinfo
=mydata[4];
textsu***ce upmessage(
"upmsg
", uinfo, screen);
textsu***ce downmessage(
"downmsg
", dinfo, screen,
0xff, 0
, 0);textsu***ce leftmessage(
"leftmsg
", linfo, screen, 0,
0xff, 0
);textsu***ce rightmessage(
"rightmsg
", rinfo, screen, 0,
0, 0xff
);textsu***ce othermessage(
"othermsg
", oinfo, screen,
100,
100,
100,
35);
SDL入門教程(十三) 2 初識多執行緒
intmain intargc char argv if gameevent.type sdl keydown screen.flip sdl killthread thread1 sdl killthread thread2 return0 void sdl delay uint32 ms 解決r...
SDL入門教程(九) 5 文字反饋滑鼠位置座標資訊
注意事項 1 times.ttf檔案請到c windows fonts下尋找並拷貝到資源目錄下。2 如果您使用vc2008,請用release編譯。原因是,似乎涉及到vector的操作,runtime library在debug的時候必須用multi theaded debug dll mdd 而r...
SDL入門教程(九) 3 文字反饋「按鍵」資訊
3.1 一些小的修改 我覺得寫c 的程式,一是看起來確實比較c 一點,二是相對於c的 精煉 c 要的是 健壯 所以,其實我不太滿意用c風格字串作為screensu ce的成員資料,所以做了修改。這也是為了在程式中構建screensu ce物件的時候可以使用string。class screensu ...