On 03.11.2008, at 14:23, DKJ wrote:

I'm still puzzled by frames and bounds. I put this in the drawRect: of MyView:

        [[NSColor redColor] set];
        NSRectFill( self.frame );
        [[NSColor blueColor] set];
        NSFrameRect( self.bounds );

I put this in the awakeFromNib of my controller:

        NSRect r = NSMakeRect( 10.0, 10.0, 200.0, 200.0 );
        MyView *mv = [[MyView alloc] initWithFrame:r];
        [[theWindow contentView] addSubview:mv];

The blue bounds rectangle is drawn just where I would expect: inset 10 pixels from the lower left corner of the window. But the red frame rectangle is inset another 10 pixels from the lower left corner of the blue bounds rectangle.

When I set the origin of r to (0.0, 0.0), the red and blue rectangles coincide.

What's happening here?

You create a view defining its frame. In your example the frame is
(10,10,200,200) and your bounds would be (0,0,200,200), because
you did not change the origin.

Drawing always takes place within the bounds, the frame is irrelevant.

Therefore the red rectangle is drawn with in offset of 10 pixels from inside the bounds, meaning (10,10,200,200) in 'bounds', but (20,20,200,200) in 'frame' coordinates.

This sentence did not make sense ;) Just keep in mind that drawing always happens in the 'bounds' coordinate system and the 'frame' represent placement (and scaling of these bounds.

Regards,
Patrick
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to