NSTextField から NSImage を作成する方法はありますか? ユーザーのテキストをキャプチャして PNG ファイルを生成するアプリを作成しています。
質問する
1160 次
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 に答える