ios - 如何获得合适的、任意宽度的文本笔划?

标签 ios drawing core-graphics cgcontext core-text

我正在尝试在某些文本上获得外发光效果,类似于 PhotoShop 的效果,例如: enter image description here

我尝试同时使用:

    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 的白色描边颜色(并增加每个屏幕截图的线宽)的结果:

enter image description here enter image description here enter image description here

下面的图片显示了当我使用属性字符串进行绘制并具有适当的笔划淡入效果(增加每个屏幕截图的笔划宽度属性)时实际发生的情况:

enter image description here enter image description here enter image description here

对我来说,这看起来像是笔画算法的错误实现,但也许你们中的一些人会更了解,有人知道如何在不出现奇怪的有角字母的情况下获得更宽的笔画效果吗?

最佳答案

尖峰似乎是由 LineCapStyle 引起的。尝试不同的设置

关于ios - 如何获得合适的、任意宽度的文本笔划?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16734488/

相关文章:

java - 有没有办法在不绘制多余形状的情况下调整 JFrame 的大小?

iOS:Coregraphics 图像质量差

iphone - 为 UIImageView 的 CABasicAnimation 强制顺时针/逆时针旋转

ios - 驱动程序未更新为最新值

user-interface - "ten thousand cents"是如何实现的?

javascript - HTML5 canvas 绘制带旋转的图像部分

ios - 真实设备上的 Core Graphics 游戏性能

ios - IBOutlet 最佳实践

ios - TableView 上的搜索栏不起作用

ios - JSON 日期到 NSDate 结果为零