首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >kCGTextStroke的填充和Stroke没有正确定位

kCGTextStroke的填充和Stroke没有正确定位
EN

Stack Overflow用户
提问于 2013-04-05 16:22:25
回答 2查看 1.7K关注 0票数 2

因此,我使用下面的代码来应用笔画(并填充)在UILabel中进行文本处理,它的结果就像下面的图像一样。笔划一边比另一边重(看字母的顶部与底部相比,右边与左边相比)。最后的句号让它看起来也很明显,就像一只谷歌眼)。我根本没有打开任何阴影,所以我不认为是阴影干扰了中风。

是什么导致了这一切?

代码语言:javascript
复制
- (void) drawTextInRect: (CGRect) rect
{
    CGContextRef c = UIGraphicsGetCurrentContext();
    CGContextSetTextDrawingMode(c, kCGTextFillStroke);
    CGContextSaveGState(c);
    CGContextSetRGBFillColor(c, 1.0, 0.0, 0.0, 1.0);
    CGContextSetRGBStrokeColor(c, 0.0, 1.0, 0.0, 1.0);
    [super drawTextInRect: rect];
    CGContextRestoreGState(c);
}

编辑:所以,为了刺激,我只看了标签上的填充和笔画。关闭笔画会产生一段看起来非常正常的文字,就像我刚刚在Interface中给它涂上了颜色一样。关闭填充,然而,只显示中风,这看起来没有比任何其他方面更重。**这使我相信,问题在于填充相对于笔划的位置,而且填充或笔画本身都不是错误的。对这件事还有什么想法吗?怎样才能使填充直接以笔划为中心?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-08 10:40:50

您可能应该使用kCGTextFillStroke作为绘图模式,并且只绘制一次(设置了单独的笔画和填充颜色)。

代码语言:javascript
复制
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);   // any color you want (this is red)
CGContextSetRGBStrokeColor(context, 0.0, 1.0, 0.0, 1.0); // any color you want (this is green)
CGContextSetTextDrawingMode(context, kCGTextFillStroke);
[self.text drawInRect:rect withFont:self.font];

或者,你可以只是中风之后。笔画通常是从中间画出来的,这意味着一半的宽度是向内的,一半是向外的。这就意味着,如果你在中风后填写,其中一些笔划会被填充所掩盖。

票数 4
EN

Stack Overflow用户

发布于 2013-04-08 08:42:43

一种可能的情况是,重写的方法使用CGContextTranslateCTM或类似的函数来转换CTM。CTM是上下文状态的一部分,并为以下所有抽签调用指定转换。

您应该尝试在调用重写的方法之前保存上下文,然后恢复它:

代码语言:javascript
复制
CGContextSaveGState(c);
[super drawTextInRect: rect];
CGContextRestoreGState(c);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15838844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档