Я бы подумал, что для программы рисования было бы важно сохранить буфер растровых данных. Единственная проблема с использованием CALayer
заключается в том, что свойство contents
является CGImageRef
. Превратить это обратно в графический контекст для дальнейшего рисования может быть немного болезненно. Вам нужно будет инициализировать новый контекст, нарисовать растровые данные в нем, затем выполнить любые операции рисования, которые вы хотите сделать, и, наконец, превратить это обратно в CGImageRef
. Вы, вероятно, не сможете избежать большого количества выделения памяти, которое практически гарантированно замедлит работу вашей программы.
Я хотел бы рассмотреть возможность хранения вне экрана буфера для каждого слоя. Посмотрите на объект Quartz CGLayerRef
. Я думаю, что это, вероятно, делает то, что вы хотите сделать: это внеэкранный буфер, в котором хранятся вещи, которые вы, возможно, захотите рисовать повторно. Вы также можете быстро получить CGContextRef
, когда вам это нужно, чтобы вы могли сделать дополнительный рисунок. И вы всегда можете использовать это CGContextRef
с NSGraphicsContext
, если хотите использовать методы рисования Какао.