dhr*_*hrm 3 cocoa objective-c nswindow
我有一个带有NSBorderlessWindowMask(没有标题栏)样式的NSWindow的Cocoa应用程序.我想在窗口中放置一个图像,但图像的一部分应该放在窗口之外.
如何才能做到这一点?

以下是我发现的两篇与你想做的事情相关的文章.
要点是将NSWindow子类化为无边界透明窗口,然后创建一个子视图来绘制自定义形状并使其成为窗口内容视图.
从样本的外观来看,阴影应该仍然适用.从可可与爱:
对于我们绘制的任何形状,窗口后面的阴影会自动绘制.窗口中任何完全清除的部分都不会收到鼠标点击(它们将通过窗口掉落).
绘制边框在视图类显示方法中执行以下操作:
NSBezierPath* border = [NSBezierPath bezierPathWithRect:self.frame];
[border setLineWidth: 1.0];
[[NSColor windowFrameColor] set];
[border stroke];
Run Code Online (Sandbox Code Playgroud)
如果您没有自定义视图类,请[view lockFocus];在执行该路径之前执行并替换self为视图实例.画完之后一定要做[view unlockFocus];
来自文档的重要信息lockFocus:
隐藏或小型化单次窗口会导致该窗口的后备存储被释放.如果不使用标准显示机制进行绘制,则在窗口小型化或隐藏时,如果有可能绘制,则应使用lockFocusIfCanDraw而不是lockFocus.
另一种做到这一点的方法肯定会保留阴影,就是使用两个窗口,让一个孩子到另一个孩子.
你不可能出于各种原因在窗外画画,其中最重要的是你的过程需要拥有或获得它所吸引的许可(许多其他原因).
| 归档时间: |
|
| 查看次数: |
463 次 |
| 最近记录: |