VC三两句话实现字体描边和空心效果
2009-11-19 11:09
567 查看
来源:http://www.vcfans.com/2008/12/vc-a-couple-of-words-to-achieve-the-effect-of-hollow-characters-and-stroke.html
最近的项目需要对字体进行描边,也就是将字体缕空。为了实现不同桌面背景图使字体看上去清楚,目前通用的解决方案就是将字体描边。关键现在这款芯片
的GUI开发包功能比较弱,一些特殊效都需要自己手动实现,汗。要实现这个效果的第一个想到的解决方案就是将系统字体的点阵取出,进行边缘检测出来,进行
处理,运算的开销不小,而且处理起来麻烦,国际化也是个麻烦。
在罗大侠的指点的下(为罗大侠能想出这种歪注意表示万分感谢),想到了一个好的方法。只需写一个描边函数即可,实现相当容易。我在PC下做了一份,效果如下图:
主要实现思路是用背景色将要显示的字体按偏移刷8遍(为了方便算法的实现,我在下面的代码中刷了9遍),最后将前景的字体再刷一遍。实现代码:
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); }
测试了CreateFont的画圈效果:
代码下载:
shadowfont.7z
(18.0 KiB, 254 hits)
相关文章推荐
- cocos2d实现CCLabelTTF真正字体描边效果
- photoshop实现字体白色边效果(描边)
- [置顶] cocos2d实现CCLabelTTF真正字体描边效果
- 使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果
- 使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果
- 使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果(转载)
- 使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果(转载)
- 使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果
- (转)使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果
- cocos2d实现CCLabelTTF真正字体描边效果
- cocos2d-x之字体描边效果shader实现
- LinearGradient在android开发中实现字体渐变效果实例
- VC简单实现淡入淡出效果
- VC中特殊字体的实现(转)
- VC++实现位图显示透明效果
- jQuery实现的点击标题文字切换字体效果示例【测试可用】
- CEGUI 0.7x实现下划线描边图文混排等效果
- UE4实现描边效果
- QT 类及其实现效果(4)--字体设置
- vc使用CToolTipCtrl类实现提示信息效果