网络游戏demo开发实例:多人在线RPG游戏(MMO RPG)demo的开发记录(第16篇)
本篇地址 http://blog.csdn.net/changjixiong/article/details/8078614,转载请注明出处
version18 csdn下载地址请猛击这里
主要内容:增加了MessageOut类用来控制客户端文字输出的颜色和字体
所属部分:客户端 服务器端
我想把字弄成别的颜色,比如,红色,我用SetTextColor设置hdcCanvas的前景色为红色,然后输出的文字是这样的

人也红了,嗯,或者可以用来做人物狂暴状态的效果,不过脚下的影子要是黑色才对。考虑到后面可能有很多的文字输出,比如人物名字正常是白色,杀人以后是红色,聊天框,被攻击掉血-100这样,还有不同的怪的名字颜色不同,比如普通怪是白色,掉宝多的怪是金色,所以,这个东西,需要分离出来控制,于是就有了类MessageOut。
MessageOut都有些啥,下面逐项的说明
每个MessageOut有下面的2个HDC,一个是要输出的内容,一个是用来打洞的掩膜
然后,将白色画刷选进hdcMask
用这2个HDC,就可以用透明背景贴图的方式输出蓝色文字了
将hdcMask用SRCAND模式贴上去,
再将hdcContent用SRCPAINT模式贴上去
在构造的时候,使用的字高是12,字粗是FW_THIN,创建的字体起了作用,最后就成了这个样子
然后,就是不停地用黑白画刷分别把HDC上的文字刷掉,再TextOut,再bitblt
如果不喜欢,可以在构造的时候,使用别的字体,用void MessageOut::SetTextColor(COLORREF color)函数来设置文本颜色
比如,主角的文字就是白色(也可以在杀人以后设置为红色,红名,hoho~)
最后,有没有人发现小地图上代表自己的那个点是白的,代表其他玩家的点是蓝的,具体请查看
void GameMap::DrawMini(HDC hdcDest, const vector<Sprite *> & vecPplayer)


