gpt4 book ai didi

cocoa - lockFocus 和unlockFocus 实际上是做什么的?

转载 作者:行者123 更新时间:2023-12-03 16:03:41 25 4
gpt4 key购买 nike

警告:我是 Cocoa 新手。

我正在阅读 Hillegass 的“Cocoa Programming For 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.

我在 NSView-(void)mouseDragged:(NSEvent *)theEvent 内的代码如下:

[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时,它确保发生的任何“绘图”都在那里发生?有人可以更好地解释一下吗?

最佳答案

绘图需要“图形上下文”。您会注意到,与 Core Graphics 不同,AppKit 绘图方法均不采用指定绘图结束位置的参数。相反,目标全局存储为 [NSGraphicsContext currentContext]。所有 AppKit 绘制方法都会影响当前上下文。

-lockFocus(在图像和 View 上)的主要目的是设置图形上下文,以便您的绘图最终到达您想要的位置。

关于cocoa - lockFocus 和unlockFocus 实际上是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5044232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com