Re: String height in pixels
Re: String height in pixels
- Subject: Re: String height in pixels
- From: vance <email@hidden>
- Date: Thu, 9 Aug 2007 12:37:09 -0700
Thanks. That worked very well with the sample on ADC. If anyone is
interested here it is:
float heightForStringDrawing(NSString *myString, NSFont *myFont,
float myWidth)
{
NSTextStorage *textStorage = [[[NSTextStorage alloc]
initWithString:myString] autorelease];
NSTextContainer *textContainer = [[[NSTextContainer alloc]
initWithContainerSize: NSMakeSize(myWidth, FLT_MAX)] autorelease];
NSLayoutManager *layoutManager = [[[NSLayoutManager alloc] init]
autorelease];
[layoutManager addTextContainer:textContainer];
[textStorage addLayoutManager:layoutManager];
[textStorage addAttribute:NSFontAttributeName value:myFont
range:NSMakeRange(0, [textStorage length])];
[textContainer setLineFragmentPadding:0.0];
[layoutManager glyphRangeForTextContainer:textContainer];
return [layoutManager
usedRectForTextContainer:textContainer].size.height;
}
- (void)drawRect:(NSRect)rect
{
[self drawRoundedRect:[self bounds] inView:self];
NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle
defaultParagraphStyle] mutableCopy];
[paragraphStyle setAlignment: NSCenterTextAlignment];
[paragraphStyle setLineBreakMode: NSLineBreakByWordWrapping];
NSFont *font = [NSFont fontWithName:@"Lucida Grande" size:15];
NSDictionary *textAttribs = [NSDictionary
dictionaryWithObjectsAndKeys: font,
NSFontAttributeName, paragraphStyle,
NSParagraphStyleAttributeName, nil];
NSString *dropImageText = @"Drop Image Here";
NSRect textDrawRect = NSInsetRect([self bounds], 20, 20);
float textHeight = heightForStringDrawing(dropImageText, font,
textDrawRect.size.width);
textDrawRect.origin.y = (textDrawRect.size.height - textHeight) / 2;
[dropImageText drawInRect:textDrawRect withAttributes:textAttribs];
}
On Aug 9, 2007, at 11:36 AM, Nick Zitzmann wrote:
On Aug 9, 2007, at 12:26 PM, vance wrote:
Hi, I am drawing a string (NSString) using drawAtPoint. My
question is how do I find the height of the string before I draw it?
You can use NSLayoutManager to do this. Search around the ADC Web
site; I found some sample code there that showed how to do this a
while ago...
Nick Zitzmann
<http://www.chronosnet.com/>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden