Предупреждение: я новичок в какао.
Я читаю "Программирование какао для Mac OS X" от Hillegass.
На стр.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];
Без блокировки / разблокировки это не работает, но я до сих пор точно не понимаю, что происходит.
Я вижу, что во 2-й строке кода нет упоминания о resizedImage
, значит ли это, что когда я использую lockFocus
, это гарантирует, что любое "рисование", которое происходит там, происходит? Может ли кто-нибудь объяснить это лучше?