如何使用NSRect或NSView绘制NSImage

问题描述 投票:0回答:1

我只是关于Appkit和macOS编程的新手,我想在App运行时更改StatusBar图标。 (是的,我正在制作菜单栏应用程序)

问题是我可以制作3600张图像以上...没办法!那是不可能的...

所以,我要做的就是让计算机生成每个图像并每秒钟更改应用程序的StatusBar图标。

首先,需要NSImage,因此请更改状态栏图标。

下面的代码是初始代码。

statusBar = NSStatusBar.init()
    statusItem = statusBar.statusItem(withLength: 70.0)
    statusBarButton = statusItem.button!

    statusBarButton.image = NSImage(named: NSImage.Name("AppIcon"))
    statusBarButton.image?.size = NSSize(width: 18.0, height: 18.0)
    statusBarButton.imagePosition = .imageRight
    statusBarButton.title = "Menu Bar App"

[确定,NSImage(named: NSImage.Name("AppIcon"))是我之前准备的初始应用程序图标图像,然后可以将某些内容转换为NSImage

我已经搜索了很多有关可以绘制图像的内容,但是似乎没有什么是适当或适当的:(

所以这就是我要发布此问题的原因。

有没有办法每秒生成图像?

请帮助我

swift xcode macos appkit
1个回答
0
投票
  • 使用NSView属性创建自定义NSImage并实现drawRect,简单示例

    class MyView: NSView {
    
        var image : NSImage? {
            didSet {
               needsDisplay = true
            }
        }
    
        init(frame frameRect: NSRect, image : NSImage?) {
            self.image = image
            super.init(frame: frameRect)
        }
    
        required init?(coder: NSCoder) {
            super.init(coder: coder)
        }
    
        override func draw(_ dirtyRect: NSRect) {
            image?.draw(at: .zero, from: bounds, operation: .sourceOver, fraction: 1.0)
        }
    }
    
  • MyView的实例添加到statusBarButton的子视图中。

  • [将图像分配给视图的image属性后,将对其进行绘制。
© www.soinside.com 2019 - 2024. All rights reserved.