我正在阅读Hillegass的“可可编程Mac OS X”.
在第301页上写道:
To make the drawing appear on the image instead of on the screen,you must first lock focus on the image. When the drawing is complete,you must unlock focus.
我有代码,里面 – (voID)mouseDragged:(NSEvent *)NSVIEw的事件如下:
[resizedImage lockFocus];[sourceImage drawInRect: NSMakeRect(0,resizeWIDth,resizeHeight) fromrect: NSMakeRect(0,originalSize.wIDth,originalSize.height) operation: NSCompositeSourceOver fraction: 1.0];[resizedImage unlockFocus];
没有锁/解锁,这不工作,但我仍然不明白是什么发生了.
我看到第二行代码没有提到resizedImage,所以这意味着当我使用lockFocus它确保发生的任何’绘图’发生在那里?有人可以更好的解释这个吗?
解决方法 绘图需要“图形上下文”.您会注意到,与Core Graphics不同,AppKit绘图方法中没有一个参数指定绘图结束的位置.相反,目的地全局存储为[NSGraphicsContext currentContext].所有AppKit绘图方法都会影响当前上下文.-lockFocus(在图像和视图上)的主要目的是设置图形上下文,以便您的绘图最终到达您想要的位置.
总结以上是内存溢出为你收集整理的可可 – lockFocus和unlockFocus实际上做什么?全部内容,希望文章能够帮你解决可可 – lockFocus和unlockFocus实际上做什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)