gpt4 book ai didi

Cocoa/CoreGraphics/Quartz - 无边框 Quicktime X 窗口,具有圆边

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

我正在为 Mac OS X 开发一个基于文档的应用程序。它是一种媒体播放器,但它不是播放音频或视频文件,而是打开包含指定 OpenGL 动画的元数据的文本文件。我想模仿 Apple 的 QuickTime X 窗口样式。这意味着,我必须自己绘制所有窗口,因为 Cocoa 没有合适的窗口样式。

有一件事让我头疼:圆角通常出现在 Mac OS X 窗口上。我尝试使用无边框窗口蒙版并使用一些 CGS 魔法 - 有一些允许窗口整形的私有(private) Apple header ,但它们当然没有记录。我能够在 window 边缘切出矩形孔,但我不明白苹果是如何实现圆角的。

创建一个透明窗口并自己绘制框架不起作用,因为 OpenGL 视口(viewport)始终是矩形,更改它的唯一方法是打开 NSOpenGLCPSurfaceOpacity 以实现 alpha 透明度并使用模板缓冲区或着色器来剪切边缘,这看起来是一个很大的开销。

如果我将 OpenGLView 放入带有标题栏的标准 Cocoa 窗口中,底部边缘将被圆化。这似乎发生在 View 层次结构的 NSThemeFrame 阶段。有什么想法如何做到这一点吗?

最佳答案

使用图层支持的 View ,并在不可见窗口的CALayer中进行绘图。图层包括圆角和边框的自动处理。

<小时/>

CALayer 的背景位于 Core Animation Programming Guide 。要为NSView创建图层,您需要调用[view setWantsLayer:YES]。您将创建一个 CAOpenGLLayer 并使用 setLayer: 将其分配给 View 。

参见CALayerEssentials示例代码演示了如何在其他图层类型中使用 CAOpenGLLayer

关于Cocoa/CoreGraphics/Quartz - 无边框 Quicktime X 窗口,具有圆边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8416056/

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