美文网首页
NGUI字体描边

NGUI字体描边

作者: Anil | 来源:发表于2017-04-16 18:06 被阅读0次

NGUI的UILabel中实现字体的描边是通过以方形的方式对字体网格顶点偏移一定位置后作为其描边网格。以这种方式描边在边角处会生硬,描边不均匀问题,特别是在比较大的字体描边时偏移越大这种生硬,不均匀程度越明显。处理这种描边一可以通过改进shader的方式来做调整,这里我介绍林一种新的方式:以圆形方式对字体网格顶点偏移一定位置后作为其描边网格。

具体修改是将UILabel 中的OnFill方法中:

//Applyaneffectifonewasrequested

if(effectStyle!=Effect.None)

{

intend=verts.size;

pos.x=mEffectDistance.x;

pos.y=mEffectDistance.y;

ApplyShadow(verts,uvs,cols,offset,end,pos.x,-pos.y);

if(effectStyle==Effect.Outline)

{

offset=end;

end=verts.size;

ApplyShadow(verts,uvs,cols,offset,end,-pos.x,pos.y);

offset=end;

end=verts.size;

ApplyShadow(verts,uvs,cols,offset,end,pos.x,pos.y);

offset=end;

end=verts.size;

ApplyShadow(verts,uvs,cols,offset,end,-pos.x,-pos.y);

}

}

替换为如下代码:

//Applyaneffectifonewasrequested

if(effectStyle!=Effect.None)

{

intend=verts.size;

pos.x=mEffectDistance.x;

pos.y=mEffectDistance.y;

if(effectStyle!=Effect.Outline)

ApplyShadow(verts,uvs,cols,offset,end,pos.x,-pos.y);

else{

floatarcLength=1.4142f;

floatdr=1f;

floatr=pos.x;

floatradian=arcLength/r;

floattempR=0;

while(tempR

intcount=(int)Math.Floor(Math.PI*2/radian);

floati=0;

while(i

floatangle=radian*i;

floatx=tempR*(float)Math.Cos((double)angle);

floaty=tempR*(float)Math.Sin((double)angle);

ApplyShadow(verts,uvs,cols,offset,end,x,y);

offset=end;

end=verts.size;

++i;

}

tempR+=dr;

}

}

}

最后的效果对比如下:

图一

图一(调整后的效果)

图二

图二(调整前的效果)

圆形拓展网格对比方形扩展网格缺点就是圆形拓展方式获得新网格会比矩形多,具体增加的量与描边偏移量有一定关系,同时目前暂时不支持x和y的不同偏移,只支持x与y的统一偏移量。

本文来自我的腾讯开发者博客:http://gad.qq.com/college/articledetail/7172155

相关文章

  • NGUI字体描边

    NGUI的UILabel中实现字体的描边是通过以方形的方式对字体网格顶点偏移一定位置后作为其描边网格。以这种方式描...

  • 字体描边

    (void)drawTextInRect:(CGRect)rect {CGSize shadowOffset = ...

  • canvas

    绘制文字 strokeText(text,x,y)描边文字 font='size 字体' 设置字体大小和字体,如:...

  • 字体描边像素颜色

    没空写文本,直接贴代码,看代码好了,不懂再m我!

  • Android TextView字体描边

    原文:链接地址 今天公司要求做一个字体描边功能,在网上搜到一个不错的,可以实现改变文字描边宽度和描边颜色,功能实现...

  • 二维CANVAS基本语法(文字text)

    绘制文字text 绘制语句 设置文本字号字体 context.font = “Npx 字体”;默认为10px 描边...

  • 面对的文字问题

    1 .描边:SDF策略2 .翻译,翻译换行。多语言的时候3 .字体。

  • text

    最普通的text字体 1 .实现一些普通的效果,json方式创建 2 .可以调字体,大小,粗细,描边,换行,斜体,...

  • ios lable字体描边+外发光

    继承label的一个类,实现 使用方法

  • 通过富文本描边功能实现字体加粗效果

    通过富文本描边功能实现字体加粗效果 如果NSStrokeWidthAttributeName设置一个正值,则实现的...

网友评论

      本文标题:NGUI字体描边

      本文链接:https://www.haomeiwen.com/subject/fsgaattx.html