可可 – 使用核心图形绘制文本

可可 – 使用核心图形绘制文本,第1张

概述我需要将居中文本绘制到CGContext. 我开始使用Cocoa方法.我用文本创建了一个NSCell并尝试绘制它: NSGraphicsContext* newCtx = [NSGraphicsContext graphicsContextWithGraphicsPort:bitmapContext flipped:true];[NSGraphicsContext saveGraphi 我需要将居中文本绘制到CGContext.

我开始使用Cocoa方法.我用文本创建了一个NSCell并尝试绘制它:

NSGraphicsContext* newCtx = [NSGraphicsContext     graphicsContextWithGraphicsPort:bitmapContext flipped:true];[NSGraphicsContext saveGraphicsstate];[NSGraphicsContext setCurrentContext:newCtx];[pCell setFont:Font];[pCell drawWithFrame:rect inVIEw:nil];[NSGraphicsContext restoreGraphicsstate];

但是CGBitmapContext似乎没有在其上呈现文本.可能是因为我必须为inVIEw:参数传递nil.

所以我尝试将文本渲染切换到Core Graphics:

最简单的方法似乎是使用CGContextSelectFont使用其postscript名称和点大小来选择字体,但CGContextshowtextAtPoint只接受非unicode字符,并且没有明显的方法将文本拟合到矩形:或计算范围一行文本来手动布局矩形.

然后,有一个可以创建的CGFont,并设置cia CGContextSetFont.绘制此文本需要CGContextShowGlyphsAtPoint,但CGContext似乎缺少计算生成文本的边界矩形或将文本换行到rect的函数.另外,如何将字符串转换为CGGlyphs数组并不明显.

下一个选项是尝试使用CoreText来呈现字符串.但Core Text类非常复杂,虽然有一些示例显示如何以矩形显示文本,指定字体,但没有示例演示如何计算CoreText字符串的边界矩形.

所以:

>给定CGFont CGContext如何计算某些文本的边界矩形,以及如何将文本字符串转换为CGGlyphs数组?
>给定一个字符串,一个CGContext和一个postscript名称和点大小,我需要创建什么Core Text对象来计算字符串的边界矩形,和/或在CGContext上绘制包裹到rect的字符串.
>给定一个字符串和NSFont – 如何将字符串呈现到CGBitmapContext?我已经知道如何获得它的范围.

解决方法 我将继续您的上述方法,但改为使用NSAttributedString.

NSGraphicsContext* newCtx = [NSGraphicsContext graphicsContextWithGraphicsPort:bitmapContext flipped:true];[NSGraphicsContext saveGraphicsstate];[NSGraphicsContext setCurrentContext:newCtx];NSAttributedString *string = /* make a string with all of the desired attributes */;[string drawInRect:locationToDraw];[NSGraphicsContext restoreGraphicsstate];
总结

以上是内存溢出为你收集整理的可可 – 使用核心图形绘制文本全部内容,希望文章能够帮你解决可可 – 使用核心图形绘制文本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1021557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存