cocos2d-x底层修改实现的文字描边解决方案
来源:互联网 发布:电脑打字什么软件培训 编辑:程序博客网 时间:2024/06/08 03:14
版本2.04
网上目前现有的很多个法子都是定义若干个文本去坐标偏移造成描边的效果.
那样确实可以.不过会凭空多很多对象出来.
如果是那些比较复杂的文字那数量级还是很多的.
于是我就想能不能换个方式.在底层就已经实现了描边的效果.
也就是在贴图生成的同时已经进行了描边.
于是一路跟踪.在CCIMAGE下边找到了这个函数.
int drawText(const char * pszText, SIZE& tSize, CCImage::ETextAlign eAlign)
一路看下去会发现函数里有这么一句.
// draw text nRet = DrawTextW(m_hDC, pwszBuffer, nLen, &rcText, dwFmt);
显然这就是贴图生成前的步骤了.
其中的rcText就代表那个文字的空间位置.
于是在这段代码前面添加描边色的文字绘制.(必须在代码前.应为主文字必须最后绘制才能是描边效果)
int dix=1; { SetTextColor(m_hDC, RGB(0, 0, 255)); // red color RECT rcText2 = {rcText.left-dix,rcText.top,rcText.right-dix,rcText.bottom}; nRet = DrawTextW(m_hDC, pwszBuffer, nLen, &rcText2, dwFmt); RECT rcText3 = {rcText.left+dix,rcText.top,rcText.right+dix,rcText.bottom}; nRet = DrawTextW(m_hDC, pwszBuffer, nLen, &rcText3, dwFmt); RECT rcText4 = {rcText.left,rcText.top+dix,rcText.right,rcText.bottom+dix}; nRet = DrawTextW(m_hDC, pwszBuffer, nLen, &rcText4, dwFmt); RECT rcText5 = {rcText.left,rcText.top-dix,rcText.right,rcText.bottom-dix}; nRet = DrawTextW(m_hDC, pwszBuffer, nLen, &rcText5, dwFmt); RECT rcText6 = {rcText.left-dix,rcText.top+dix,rcText.right-dix,rcText.bottom+dix}; nRet = DrawTextW(m_hDC, pwszBuffer, nLen, &rcText6, dwFmt); RECT rcText7 = {rcText.left-dix,rcText.top-dix,rcText.right-dix,rcText.bottom-dix}; nRet = DrawTextW(m_hDC, pwszBuffer, nLen, &rcText7, dwFmt); RECT rcText8 = {rcText.left+dix,rcText.top-dix,rcText.right+dix,rcText.bottom-dix}; nRet = DrawTextW(m_hDC, pwszBuffer, nLen, &rcText8, dwFmt); RECT rcText9 = {rcText.left+dix,rcText.top+dix,rcText.right+dix,rcText.bottom+dix}; nRet = DrawTextW(m_hDC, pwszBuffer, nLen, &rcText9, dwFmt); }
我在八个方向都进行了坐标单像素偏移.
之后重新编译.描边效果不错~.
并且是单对象内部实现的描边.
缺点当然也有.就是生成之后描边色不可再次修改.
至于生成前的颜色就不需要我再去多写什么了.
写个函数在更前的地方去判定描边与否以及描边颜色即可.
需要注意的是.底层的颜色并不是RGB.尽管那里写着RGB.
而是BGR.顺序不同的.
附上代码效果.
0 0
- cocos2d-x底层修改实现的文字描边解决方案
- cocos2d-x 文字描边
- cocos2d-x 文字描边
- cocos2d-x 利用CCLabelTTF实现文字描边
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- cocos2d-x 利用CCLabelTTF制作文字描边与阴影效果的实现方法
- 01.cocos2d-x游戏引擎的底层实现(引言)
- Cocos2d-x-------------------------------------------Label数字文字描边
- 【cocos2d-x】公告栏的实现-文字左右移动
- Cocos2d-x与OpenGL底层的感想
- Cocos2d-x与OpenGL底层的感想
- cocos2d-x 实现图片加文字菜单
- Cocos2d-x 实现静态进度条,文字滚动
- Cocos2d-x里面的HelloCpp项目不显示文字(或中文出现乱码)--解决方案
- cocos2d-x实现文字输入框以及字符串中文字的提取
- cocos2d-x 3.x的底层渲染机制
- v4l2的开发详细步骤
- 初始MySQL账户安全
- ubuntu乱码解决方案
- socket通信
- ubuntu 下 用C语言连接mysql
- cocos2d-x底层修改实现的文字描边解决方案
- linux下vi命令大全
- 一些C语言题目
- Mutt邮件处理系统框图
- Linux之PC与Linux虚拟机之间的文件传输
- Linux内核源码分析方法
- vim 小技巧
- APUE 学习(一)
- APUE 学习(二) 信号