近日在处理一些文字渲染的上层模块,一策划建议聊天模块的输出字体加个描边,一问老大,目前聊天系统使用的字体输出渲染不支持描边,而后就直接给我讲了描边字体的一种实现:
1.首先 CFONT *pfont = GetInt(); // 初始化字体指针对象 Dx9的 各人与各自的方法 以下只说本具体伪代码。
2. pfont->SetTxt( dwColor, pos.x, pos.y ); // 这里是写入缓冲 假如现在的dwColor为 0xff123456 随便咯。
3. pfont->Render();
1. 来点小操作,描边字体实现:
CFONT *pfont = GetInt(); // 依然为初始化
// 我们来描边黑色
pfont->SetTxt( 0xff000000, pos.x+1, pos.y ); // 一个像素移动
pfont->SetTxt( 0xff000000, pos.x-1, pos.y );
pfont->SetTxt( 0xff000000, pos.x, pos.y+1 );
pfont->SetTxt( 0xff000000, pos.x, pos.y-1 );
pfont->SetTxt( dwColor, pos.x, pos.y );
pfont->Render();
根据压入缓存的顺序,最终会同时绘制5次字体,只是前4个上、下、左、右移动一个像素,最后一个为实际的具体位置,那么根据顺序产生的遮挡,最终出来的效果就是 字体周围上了一层黑色的边。 That's all; : )