String 如何光栅化字符串(mac)

String 如何光栅化字符串(mac),string,image,nsstring,String,Image,Nsstring,我试图获取一个NSString并将其光栅化为位图一个字节数组RGBA 我所得到的关于如何做这类事情的最接近的信息是在一篇论坛帖子中,该帖子提出了一些类似的建议 NSString *myString = [[NSString alloc] initWithString:@"This is a test"]; NSSize size = {256, 256}; NSImage *myImage = [[NSImage alloc] initWithSize:size];

我试图获取一个NSString并将其光栅化为位图一个字节数组RGBA

我所得到的关于如何做这类事情的最接近的信息是在一篇论坛帖子中,该帖子提出了一些类似的建议


    NSString *myString = [[NSString alloc] initWithString:@"This is a test"];
    NSSize size = {256, 256};
    NSImage *myImage = [[NSImage alloc] initWithSize:size];


    [myImage lockFocus];
    // if you have a second image you're going to overlay on top of the first, do the same except use NSCompositeSourceOver as the operation
    [myString drawAtPoint: NSMakePoint(0, 0)];
    [myImage unlockFocus];

    NSData *tiffData = [myImage TIFFRepresentation];
不幸的是,该应用程序在[myImage lockFocus]冻结/崩溃

我也研究过在CoreGraphics中实现这一点,但我发现关于这一点的信息更少。我得到了一些零碎的东西,比如位图上下文和字体对象,但没有任何东西提示“光栅化这个字符串”

如果有人对如何做到这一点有一些想法,我们将不胜感激

谢谢

[编辑] 我刚刚注意到,这就是我让人明白这对我来说是新的地方。我是否可以使用CGBitmapContextCreate创建一个CGContextRef,然后使用UIGraphicsPushContext“推送”它,以便任何后续的drawAtPoint渲染到该上下文ref?对不起,我现在想大声点。我应该试试看。 [编辑二]
UIGraphicsPushContext是一个UIKit方法,不幸的是,据我所知,它只意味着iPhone

我不妨在一个月后回复我自己的帖子

基本上,您必须创建一个CFString,然后使用它来创建一个CTLine。有一些方法可用于查找CTLine的维度,然后可以使用CGBitmapContextCreate创建位图上下文

从那里,可以使用CTLineDraw将CTLine对象渲染到位图上下文

这些文档很好地解释了所有其他要求,如位置和颜色等,但这是所有感兴趣的人的要点

我用来开始学习的大部分信息实际上都来自这个网站