gpt4 book ai didi

objective-c - kCGTextStroke 的 Fill 和 Stroke 没有正确定位

转载 作者:行者123 更新时间:2023-12-02 05:08:50 24 4
gpt4 key购买 nike

所以我使用下面的代码对 UILabel 中的文本应用描边(和填充),结果如下图所示。一侧的笔画比另一侧重(看一下字母的顶部与底部的比较,右侧与左侧的比较。末尾的句点也非常明显,看起来像一只眼睛)。我根本没有打开任何阴影,所以我不认为是阴影干扰了笔触。

这可能是什么原因造成的?

- (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);
}

enter image description here

编辑:所以,为了好玩,我查看了只有填充和描边的标签。关闭描边会创建一个看起来非常正常的文本片段,就好像我只是在 Interface Builder 中给它上色一样。然而,关闭填充只会显示描边,看起来任何一侧都不会比其他任何一侧都重。 **这让我相信问题在于填充相对于笔画的位置,并且填充或笔画本身都没有问题。对此还有其他想法吗?如何使填充直接居中于笔划?

最佳答案

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

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];

或者您可以在之后抚摸。笔划通常从中心开始绘制,这意味着宽度的一半向内,一半向外。这意味着如果在描边之后进行填充,部分描边将被填充覆盖。

关于objective-c - kCGTextStroke 的 Fill 和 Stroke 没有正确定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15838844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com