如何栅格化字符串(mac)

时间:2009-10-08 02:03:30

标签: string image nsstring

我正在尝试使用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中这样做,但我发现更少的信息。我得到点点滴滴,即位图上下文和字体对象,但没有任何提示,“光栅化这个字符串”

如果有人对如何做到这一点有了一些想法,那将非常感激

感谢。

[编辑] 我刚刚注意到this,这就是我明白这对我来说很新的地方。我是否可以使用CGBitmapContextCreate创建一个CGContextRef,然后使用UIGraphicsPushContext“推”它,以便任何后续的drawAtPoint呈现给该上下文ref?对不起,我现在大声思考。我应该尝试一下。 [EDIT2] UIGraphicsPushContext是一个UIKit方法,不幸的是,据我所知,它仅仅意味着iPhone。

1 个答案:

答案 0 :(得分:0)

我也可以回复我自己的帖子(一个月后)

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

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

文档非常适合解释所有其他要求,例如位置和颜色等,但这是所有感兴趣的人的要点。

我过去常常让我开始的大部分信息都来自this网站