gpt4 book ai didi

objective-c - CGContextShowTextAtPoint 渲染颠倒

转载 作者:行者123 更新时间:2023-12-03 16:59:22 25 4
gpt4 key购买 nike

我试图通过Quartz通过CGContextShowTextAtPoint()将一些文本绘制到NSView上。这工作得很好,直到我覆盖 (BOOL)isFlipped 以在我的 NSView 子类中返回 YES ,以便将原点定位在左上角绘画。文本绘制在预期区域,但字母全部倒置。我还尝试了(至少理论上)相当于翻转 CGContext 并按上下文高度进行翻译的操作。

例如

// drawRect:
CGContextScaleCTM(theContext, 1, -1);
CGContextTranslateCTM(theContext, 0, -dirtyRect.size.height);

这会产生相同的结果。

针对类似问题的许多建议都指向修改文本矩阵。我已将文本矩阵设置为单位矩阵,对其执行额外的反转,并分别完成这两项操作。所有这些解决方案都导致了更奇怪的文本渲染(通常只显示一个片段。)

我看到的另一个建议是简单地避开这个函数,转而使用其他绘制文本的方法(例如 NSString 的绘制方法)。但是,这主要是在 C++/C 中完成的如果可能的话,我希望保持在这些水平。

非常感谢任何建议,如果需要,我很乐意发布更多代码。

谢谢,山姆

最佳答案

此问题已得到解答here .

基本上这是因为 iOS 核心图形上的坐标系被翻转(x:0, y:0 在左上角),与 Mac 上的坐标系相反(其中 x:0 ,y:0 位于左下角)。解决方案是设置文本转换矩阵,如下所示:

CGContextSetTextMatrix(context, CGAffineTransformMake(1.0,0.0, 0.0, -1.0, 0.0, 0.0));

关于objective-c - CGContextShowTextAtPoint 渲染颠倒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6640099/

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