CGcontextSaveGStateとCGcontextRestoreGStateの役割
1137 ワード
CGcontextSaveGStateとCGcontextRestoreGStateの役割
Quartzを使用する場合は、保存されたグラフィックステータススタックを含むグラフィックコンテキストに関連します.Quartzでグラフィックコンテキストを作成すると、スタックは空になります.
UIGraphicsBeginImageContextWithOptions(targetRect.size, YES, 0.0);
CGContextRef context = UIGraphicsGetCurrentContext();
float myFillColor[] = {1,0,0,1}; //red;
CGContextSaveGState(context);
CGContextSetRGBFillColor(context, 0,1,1,1);
CGContextFillRect(context, targetRect);
CGContextSetFillColor(context, myFillColor);
CGContextFillEllipseInRect(context, targetRect);
CGContextFillPath(context);
CGContextRestoreGState(context);
UIImage *uiImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Quartzを使用する場合は、保存されたグラフィックステータススタックを含むグラフィックコンテキストに関連します.Quartzでグラフィックコンテキストを作成すると、スタックは空になります.
CGContextSaveGState
関数は、現在のグラフィック状態をスタックにプッシュする役割を果たす.その後、グラフィックステータスを変更すると、その後の描画操作に影響しますが、スタックに格納されているコピーには影響しません.修正が完了すると、CGContextRestoreGState
関数でスタックの上部のステータスをポップアップし、前のグラフィックステータスに戻ることができます.このような押し込みとポップアップの方法は、前のグラフィック状態に戻る迅速な方法であり、すべての状態修正を1つずつ取り消すことを避ける.これも、クリップパスなどのステータスを元の設定に戻す唯一の方法です.UIGraphicsBeginImageContextWithOptions(targetRect.size, YES, 0.0);
CGContextRef context = UIGraphicsGetCurrentContext();
float myFillColor[] = {1,0,0,1}; //red;
CGContextSaveGState(context);
CGContextSetRGBFillColor(context, 0,1,1,1);
CGContextFillRect(context, targetRect);
CGContextSetFillColor(context, myFillColor);
CGContextFillEllipseInRect(context, targetRect);
CGContextFillPath(context);
CGContextRestoreGState(context);
UIImage *uiImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();