docs:programming:cocoa_and_objective-c:nsview

NSView

Below we are using the NSImageRep object to draw into the view, instead of using the NSImage class. The NSImageRep class allows us to select a representation, which is calculated elsewhere with “repOffset.”

actualSize is used to set the image size to the actual pixels. I don't fully understand why the system sometimes decides to use a size other than pixel size for a typical graphics file.

- (void)drawRect:(NSRect)rect
{

	if(image != nil){	
		NSImageRep *myRep = (NSImageRep *)[[image representations] objectAtIndex:repOffset];
		NSSize actualSize = NSMakeSize([myRep pixelsWide],[myRep pixelsHigh]);

		[myRep setSize:actualSize];
		rect.size = actualSize;
		
		// fix scrolling origin...
		// the superview of this class is the contentView of the scrollView, which
		// is of the NSClipView class
		NSRect contentFrame = [(NSView *)[self superview] frame];
		rect.origin = contentFrame.origin;

		[self setFrameSize:actualSize];

		[myRep drawInRect:rect];
		
	}
	
}
  • docs/programming/cocoa_and_objective-c/nsview.txt
  • Last modified: 2008/08/03 00:25
  • by 127.0.0.1