我有一把Knife工具作为PowerCADD中WildTools的一部分,用于剪切图形中的对象。我做了这个错误的'几年前通过使用NSBitmapImageRep比较和设置像素的方式。它有效,但速度非常慢,我很尴尬,我正在努力解决这个问题。
我现在使用的方法是使用NSBitmapImageRep在屏幕外绘制一个蒙版,然后使用CGContextRef,用掩码剪切CGContextRef,然后使用CGContextDrawImage和原始CGImageRef来获取蒙版图像。
没有问题让这个工作,但是对于单个刀切图像,我必须做两次,一次用于刀切的每一面。
我遇到的问题是在300-400 dpi图像中使用非常大的位图,例如14000 x 9000像素。在这种情况下,当我调用CGBitmapContextCreate时,我将获得一个NULL上下文,整个事情就会崩溃。
我试图弄清楚是否有一种方法可以通过单个NSBitmapImageRep为四个操作执行此操作。我的想法是创建一个NSImage,锁定它的焦点,以便绘图进入它创建一个掩码。然后使用NSImage drawInRect和NSCompositeClear操作来屏蔽图像中不需要的部分。如果我从未在单个NSBitmapImageRep中获得任何位,那么也许我可以使用单个NSBitmapImageRep完成所有操作。
有人有任何想法吗?