Преобразовать NSTextField в NSImage?

Есть ли способ создания NSImage из NSTextField? Я делаю приложение, которое должно захватывать текст пользователя и генерировать PNG-файлы.

0
добавлено
Просмотры: 1

1 ответы

да, пусть вид рисуется в изображение:

-(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;
}

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


если вы хотите только STRING, сделайте это самостоятельно, используя метод drawString NSString следующим образом:

-(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;
}
2
добавлено
Измененный imageOfView: теперь вы получаете представление - вы передаете ему textField. например [self imageOfView: label00];
добавлено автор Daij-Djan, источник
извините, скопируйте и вставьте ошибку, поскольку я написал код частично из вышеупомянутого блога, Ill исправить это
добавлено автор Daij-Djan, источник
NSMakeSize (mySize.width, mySize.height) не требуется, поскольку mySize уже является размером. Вы можете просто использовать mySize для инициализатора.
добавлено автор Peter Hosey, источник
Звучит неплохо, но как я указываю, что NSTextField я хочу отобразить? У меня несколько определенных как IBOutlet NSTextField * label00, * label01, и я хочу создать NSImage из каждого. Благодаря!
добавлено автор Alejandro Luengo, источник
Спасибо тебе так много Daij-Djan, что вы спасли мой день!
добавлено автор Alejandro Luengo, источник