나는 그림 응용 프로그램 마녀 그런 일이 :취소 CIImageAccumulator
내가 CIRadialGradient- CIRadialGradient outputImage을 가지고 inputImage 등 CISourceOverCompositing 필터에서 사용 (CUmage에서 inputBackground가 비어 있습니다.)
- CISourceOverCompositing outputImage를 brushAccumulator 이미지로 설정하십시오. (나중에 brushAccumulator 이미지가 inputBackgroundImage로 사용됩니다. CISourc eOverCompositing 필터) mainImageAccumulator 이미지로 CIBlendWithMask inputMaskImage 설정 CIBlendWithMask outputImage로
- 설정 brushAccumulator 이미지는
화면에 mainImageAccumulator을 그립니다 그리고 실행 취소 방법을 구현하려는. 첫째로 나는 brushAccumulator.image (CIImage)를 undo 객체로 사용할 수 있다고 생각했다. (mutableArray에 추가하고, undo 메소드가 호출되면 mutableArray 객체 중 하나에 brushAccumulator 이미지를 설정한다.) 그러나 나는 그것을 발견했다 : CIImage는 포함 된 이미지가 아니다. 예를 들어 CIFilter의 출력과 같이 일련의 명령을 작성한 결과 일뿐입니다. 따라서 CIImage를 복사하는 경우 해당 지침을 복사하면 수정할 때 출력이 수정됩니다.
그래서 brushAccumulator의 이미지에서 NSBitmapImageRep을 만들고 NSMutableArray에 저장할 수있을 것이라고 생각했습니다. 하지만 brushAccumulator를 업데이트하는 데 문제가 발생했습니다. NSMutableArray에서 NSBitmapImageRep 중 하나로 만든 새 CIImage를 brushAccumulator 이미지로 설정했지만 brushAccumulator 이미지는 변경되지 않습니다.
페인팅 응용 프로그램이 CIImageAccumulator (CIMicroPaint 샘플 코드와 유사)를 기반으로하면서 실행 취소/다시 실행 효과를 얻으려면 무엇을 제공 할 수 있습니까?