Что на самом деле делают lockFocus и unlockFocus?

Предупреждение: я новичок в Cocoa.

Я читаю «Программирование какао для Mac OS X» Хиллегасса.

На стр.301 написано:

Чтобы рисунок отображался на изображении, а не на экране, вы должны сначала заблокировать фокус на изображении. Когда рисунок будет завершен, вы должны разблокировать фокус.

Код, который у меня есть внутри - (void) mouseDragged: (NSEvent *) theEvent из NSView выглядит следующим образом:

[resizedImage lockFocus];
[sourceImage drawInRect: NSMakeRect(0, 0, resizeWidth, resizeHeight) fromRect: NSMakeRect(0, 0, originalSize.width, originalSize.height) operation: NSCompositeSourceOver fraction: 1.0];
[resizedImage unlockFocus];

Без блокировки / разблокировки это не работает, но я все еще не понимаю, что именно происходит.

Я вижу, что во второй строке кода нет упоминания о resizedImage , поэтому означает ли это, что когда я использую lockFocus , он гарантирует, что любой "рисунок" что там происходит? Может ли кто-нибудь объяснить это лучше?

12
задан Vamos 18 February 2011 в 17:12
поделиться