Предупреждение: я новичок в 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
, он гарантирует, что любой "рисунок" что там происходит? Может ли кто-нибудь объяснить это лучше?