我正在尝试在某些文本上获得外发光效果,类似于 PhotoShop 的效果,例如:
我尝试同时使用:
CGContextSetTextDrawingMode(context, kCGTextStroke);
CGContextShowTextAtPoint(context, x, y, "M", 1);
和 CoreText API 绘制具有笔划宽度的属性字符串(首先绘制最宽的笔划,一直到最终只填充字符串):
CTLineRef line = CTLineCreateWithAttributedString((CFAttributedStringRef)CFBridgingRetain(stringToDraw));
CGContextSetAlpha(context, myAlpha);
CGContextSetTextPosition(context, x, y);
CTLineDraw(line, context);
两种解决方案都工作得很好,直到我尝试用比某个阈值更宽的笔画宽度来绘制它们,然后奇怪的工件开始出现。 这些图片显示了将绘制模式设置为 kCGTextFillStroke 并使用 alpha 为 0.5 的白色描边颜色(并增加每个屏幕截图的线宽)的结果:
下面的图片显示了当我使用属性字符串进行绘制并具有适当的笔划淡入效果(增加每个屏幕截图的笔划宽度属性)时实际发生的情况:
对我来说,这看起来像是笔画算法的错误实现,但也许你们中的一些人会更了解,有人知道如何在不出现奇怪的有角字母的情况下获得更宽的笔画效果吗?
最佳答案
尖峰似乎是由 LineCapStyle 引起的。尝试不同的设置
关于ios - 如何获得合适的、任意宽度的文本笔划?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16734488/