1

NSTextField から NSImage を作成する方法はありますか? ユーザーのテキストをキャプチャして PNG ファイルを生成するアプリを作成しています。

4

2 に答える 2

2

はい、ビューを画像に描画させます:

-(NSImage *)imageOfView:(NSView*)view
{
 NSRect myRect = view.bounds;
 NSSize imgSize = myRect.size;

 NSBitmapImageRep *bir = [view bitmapImageRepForCachingDisplayInRect:myRect];
 [bir setSize:mySize];
 [view cacheDisplayInRect:myRect toBitmapImageRep:bir];

 NSImage* image = [[[NSImage alloc]initWithSize:mySize] autorelease];
 [image addRepresentation:bir];
 return image;
}

http://www.stairways.com/blog/2009-04-21-nsimage-from-nsviewから


STRING のみが必要な場合は、次のように NSString の drawString メソッドを使用して自分でレンダリングします。

-(NSImage *)imageWithText(NSString*)string:
{
 NSSize mySize = NSMakeSize(50,100); //or measure the string

 NSBitmapImageRep *bir = NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc]
    initWithBitmapDataPlanes:(unsigned char **)&bitmapArray
    pixelsWide:mySize.width pixelsHigh:mySize.height
    bitsPerSample:8
    samplesPerPixel:3  // or 4 with alpha
    hasAlpha:NO
    isPlanar:NO
    colorSpaceName:NSDeviceRGBColorSpace
    bitmapFormat:0
    bytesPerRow:0  // 0 == determine automatically
    bitsPerPixel:0];  // 0 == determine automatically

    //draw text using -(void)drawInRect:(NSRect)aRect withAttributes:(NSDictionary *)attributes

 NSImage* image = [[[NSImage alloc]initWithSize:mySize] autorelease];
 [image addRepresentation:bir];
 return image;
}
于 2012-12-28T10:56:26.557 に答える
0

Swift 5 では:

  private func convertTextFieldToImage() -> NSImage? {
    let myRect = timerLabel.bounds
    let mySize = myRect.size

    guard let bitmapImageRepresentation = timerLabel.bitmapImageRepForCachingDisplay(in: myRect) else {
      return nil
    }
    bitmapImageRepresentation.size = mySize
    timerLabel.cacheDisplay(in: myRect, to: bitmapImageRepresentation)

    let image = NSImage(size: mySize)
    image.addRepresentation(bitmapImageRepresentation)

    return image
  }
于 2019-05-14T10:08:13.303 に答える