【问题标题】:Graphical interface buttons in CocoaCocoa 中的图形界面按钮
【发布时间】:2009-08-29 03:55:39
【问题描述】:

情况:具有音乐应用界面的新手。我有 2 张大图像,一张是主“向上”或普通视图,另一张是完整的“向下”视图。 (按钮全部按下、点亮等,LED 亮起等)。可能还有几个较小的图像要复制。

在 Carbon 和旧的 Mac OS 中,我会为每个图像加载 2 个 GWorld,然后根据需要使用 Copybits 复制单击按钮的任何子矩形,并根据窗口进行适当的 blit。

虽然我认为我仍然可以在 Cocoa 中使用这种方法,但它已被弃用,是时候走向现代了:

问:在 Cocoa 中用什么替代旧的 Copybits 方法? (相当简单的是先前的):) 重申一下,在 Cocoa 中进行类似操作的最佳(并且最适合新手)方法是什么……用于将图像和各种子区域制作成图形工作按钮?处理点击?

此处的目标示例:类似于 GarageBand 等,或任何漂亮的 VST 乐器界面,其中它们复制了模拟经典(Moog 等)基本上,拍摄合成器的图像并使“按钮”和旋钮工作可可。

我想我会需要 NSView 和一些 Quartz,然后在这里阅读,可能会想到 NSOpenGLView。然后我读到了 NSButtonCell 也许?使图像成为自定义控件?需要相对较快,因为可能同时进行大量 MIDI I/O 和处理。

【问题讨论】:

    标签: cocoa graphics custom-controls


    【解决方案1】:

    如果你想“走向现代”,那就走向完全现代……

    具体来说,用一堆 NSButton、NSSlider 等来布置你的界面……然后看看你可以通过为按钮使用自定义开/关图像走多远。对于滑块,您可能需要创建一个子类,然后覆盖绘图方法。

    各种 NSControl 类为您完成了大量与事件跟踪和用户体验相关的繁重工作。除非你真的、真的必须这样做,否则不要重新发明那个轮子。

    它们还被设计为随心所欲地进行子类化和自定义。

    至于性能,它可能会很好。音频应用程序的问题通常不是原始 CPU 性能,而是延迟。无论如何,您都希望将音频处理推离主事件循环。

    从简单开始,看看你能走多远,然后根据需要自定义 UI。只要您智能地构建应用程序,就不会在这样做时抛出太多代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      相关资源
      最近更新 更多