我有繪畫應用巫婆就像是:撤消CIImageAccumulator
- 在鼠標按下/的mouseDragged事件我畫事件位置的點與 CIRadialGradient
- 採取CIRadialGradient outputImage和CISourceOverCompositing 過濾器inputImage的使用(在開始處的inputBackground爲空CIImage)
- 將CISourceOverCompositing outputImage設置爲brushAccumulator圖像 (稍後將brushAccumulator圖像用作inputBackgroundImage的 CISourc eOverCompositing過濾器)
- 設置brushAccumulator形象CIBlendWithMask inputMaskImage集 CIBlendWithMask outputImage作爲mainImageAccumulator圖像繪製 mainImageAccumulator篩選
我想要實現撤消方法。首先,我想我可以使用brushAccumulator.image(CIImage)作爲撤消對象(將其添加到mutableArray中,然後當調用undo方法將brushAccumulator圖像設置爲mutableArray對象之一時),但我發現: CIImage不是包含像素,它只是一系列構建它的指令的結果,例如CIFilter的輸出。所以如果你複製CIImage,你只需複製這些指令,修改時會修改輸出。
所以我想我可以從brushAccumulator的圖像製作NSBitmapImageRep並將它存儲到NSMutableArray。但是我遇到了更新brushAccumulator的問題。我將NSMutableArray中的一個NSBitmapImageRep作爲brushAccumulator圖像設置爲新的CIImage,但brushAccumulator圖像不會更改。
什麼可以爲您提供我實現撤銷/重做效果,而我的繪畫應用程序是基於CIImageAccumulator(類似於CIMicroPaint示例代碼)?