【问题标题】:How to rasterize a string (mac)如何栅格化字符串(mac)
【发布时间】:2009-10-08 02:03:30
【问题描述】:

我正在尝试获取 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 呈现到该上下文引用?抱歉,我现在想大声说出来。我应该试试看。 [编辑2] UIGraphicsPushContext 是一种 UIKit 方法,不幸的是,据我所知,这意味着 iPhone。

【问题讨论】:

    标签: string image nsstring


    【解决方案1】:

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

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

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

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

    我用来帮助我入门的大部分信息实际上来自this 站点

    【讨论】:

      猜你喜欢
      • 2012-05-07
      • 2011-10-24
      • 2013-03-17
      • 1970-01-01
      • 2014-10-12
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多