wince下实现字体描边和空心效果

jimmy54 2010-03-03 03:16:17
原VC版来自:

来源:http://www.vcfans.com/2008/12/vc-a-couple-of-words-to-achieve-the-effect-of-hollow-characters-and-stroke.html
作者:lonkil (lonkil_at_gmail.com)
日期:2008-12-14
转载请注明出处,谢谢。

最近的项目需要对字体进行描边,也就是将字体缕空。为了实现不同桌面背景图使字体看上去清楚,目前通用的解决方案就是将字体描边。关键现在这款芯片的GUI开发包功能比较弱,一些特殊效都需要自己手动实现,汗。要实现这个效果的第一个想到的解决方案就是将系统字体的点阵取出,进行边缘检测出来,进行处理,运算的开销不小,而且处理起来麻烦,国际化也是个麻烦。

在罗大侠的指点的下(为罗大侠能想出这种歪注意表示万分感谢),想到了一个好的方法。只需写一个描边函数即可,实现相当容易。我在PC下做了一份,效果如下图:



主要实现思路是用背景色将要显示的字体按偏移刷8遍(为了方便算法的实现,我在下面的代码中刷了9遍),最后将前景的字体再刷一遍。实现代码:

view plaincopy to clipboardprint?
void CshadowfontView::DrawShadow(CDC *pDC, CString & str, COLORREF clrTxt, COLORREF clrBG, int x, int y)
{
if( pDC == NULL ) return;

CPen pen;
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor( clrBG );
for (int i=0; i < 3; i++)
{
for (int j=0; j < 3; j++)
{
pDC->TextOut(x+i, y+j, str);
}
}

pDC->SetTextColor( clrTxt );
pDC->TextOut(x+1, y+1, str);
}


wince版

来源:http://blog.csdn.net/jimmy54
作者:jimmy54
日期:2010-3-3

感谢lonkil
转载请注明出处,谢谢。

wince 下要使用:ExtTextOut(hdc, x, y, ETO_OPAQUE, 0, str, len, 0);函数

WINCE下效果图:



代码下载
...全文
62 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧