(NGUI)label设置局部字体大小
来源:互联网 发布:淘宝店团队管理要点 编辑:程序博客网 时间:2024/04/28 19:21
最近项目里有个需求,在设计剧情对话的时候需要逐个字的播放一个label里的剧情对话,当然这不是关键,关键是策划需求剧情内的某些字段比如名字等需要区别于剧情对话的字体的大小。当然有人会说直接拼label就完事了,当然这是一种解决方案,这里分享一下通过修改uilabel来实现是更改局部字体大小的目的。
实际上label的绘制是在NGUIText.cs这个C#文件内的Print()接口实现的,其中有这样一段的代码:
if (!bold)
{
if (!italic)
{
verts.Add(new Vector3(v0x, v0y));
verts.Add(new Vector3(v0x, v1y));
verts.Add(new Vector3(v1x, v1y));
verts.Add(new Vector3(v1x, v0y));
}
else // Italic
{
float slant = fontSize * 0.1f * ((v1y - v0y) / fontSize);
verts.Add(new Vector3(v0x - slant, v0y));
verts.Add(new Vector3(v0x + slant, v1y));
verts.Add(new Vector3(v1x + slant, v1y));
verts.Add(new Vector3(v1x - slant, v0y));
}
}
else // Bold
{
for (int j = 0; j < 4; ++j)
{
float a = mBoldOffset[j * 2];
float b = mBoldOffset[j * 2 + 1];
float slant = (italic ? fontSize * 0.1f * ((v1y - v0y) / fontSize) : 0f);
verts.Add(new Vector3(v0x + a - slant, v0y + b));
verts.Add(new Vector3(v0x + a + slant, v1y + b));
verts.Add(new Vector3(v1x + a + slant, v1y + b));
verts.Add(new Vector3(v1x + a - slant, v0y + b));
}
}
这段代码的是实现对当前的string设置显示的区域的,也就是说通过设置verts能够实现对当前string显示区域的设置,里面的v0x,v1x,v0y,v1y,是对应需要显示string面积的四条边界;
只要控制这样的区域就能实现对字体大小的控制。
需要注意的是每次字体变大或缩小后,在绘制下一个子节的时候需要移动x0和x1,防止造成,字体重叠的现象。
- (NGUI)label设置局部字体大小
- GUI.Label 字体大小设置
- NGUI 中 Label 字体大小变化的问题
- LateX 全文(局部)字体大小设置
- 设置GUI中Label字体大小
- unity中NGUI文本字体大小设置
- iOS设置Label上显示不同字体大小
- 设置GUI中Label的字体大小
- iOS设置Label上显示不同字体大小
- Swing中字体大小的设置,局部字体大小设置
- IOS 设置label内的字体大小适应label的宽度
- Label字体大小自适应label
- 【从零开始学NGUI 】 (二)Label
- ios-label-字体大小-日记
- 【Unity3D】【NGUI】渐变label
- 有关ngui label组件
- NGUI Label打字机效果
- NGUI Label组件介绍
- 定时器
- POJ 1067 取石子游戏
- Ubuntu django psycopg2 problem
- 如何简单理解ngnix的反向代理
- Linux常用命令:find命令之xargs
- (NGUI)label设置局部字体大小
- LeetCode:Balanced Binary Tree
- Linux常用命令:find 命令的参数详解
- QTP(UFT)只能录制窗口的操作,不能录制窗口中对象的操作
- viterbi算法
- 流(IO)
- Android内存管理原理
- heap
- 使用智能指针