2012-12-02 40 views
0

現在我這樣做:如何保存和恢復可可/石英中的多個上下文?

CGContextRef context = NULL; 
context = [[NSGraphicsContext currentContext] graphicsPort]; 

[see if I need to restore] 
[if so] 
CGContextRestoreGState(context); 

[do transformations and draw some stuff] 

[save the current state] 
CGContextSaveGState(context); 

我想有不同的狀態,所以我可以回去給他們。我現在這樣做,似乎只能存儲一個。我需要多個上下文嗎?我在猜測,但我不確定最好的方式是什麼。無論如何,我剛剛進入可可,我想我會問!謝謝!

回答

1

使用CGContextSaveGState/CGContextRestoreGState,可以保存多個圖形狀態。 CGContextSaveGState的文檔說「每個圖形上下文都維護着一堆圖形狀態。」

+0

好吧我想我應該更好地閱讀文檔。謝謝! – bottleboot

1

聽起來像你可能想要實現一個撤消管理器,而不是保存不同的狀態。在這個應用程序SimpleDrawing,有一個很好的例子,使用石英與撤消管理器和上下文。

+0

謝謝!這是一個非常有用的答案和鏈接。我可以用它來進一步研究我有什麼和想要什麼。 – bottleboot