質問
このコードで素敵な影のある円を作成します (iPhone には MonoTouch.net を使用しています。もちろん Objective-C の答えでも大丈夫です)
UIGraphics.PushContext (ctx);
SizeF shadowSize = new SizeF (0f, -3f);
ctx.SetRGBFillColor (194f / 255f, 212f / 255f, 238f / 255f, 1f);
ctx.SetAllowsAntialiasing (true);
ctx.SetShadowWithColor (shadowSize, 20, new CGColor (0.9f, 0.7f));
RectangleF area = new RectangleF (35f, 15f, 210f, 210f);
ctx.FillEllipseInRect (area);
UIGraphics.PopContext ();
次に、円弧と線を追加したいと思います。そうすると、色や影などがくっついてしまうのですが?UIView の描画中に「最初から開始」するにはどうすればよいですか?(すべて同じ UIView 内にあります。イメージを膨らませています)
解決
描画されたものをすべてクリアして空白のキャンバスを作成したい場合は、次のようにしてください。 CGContextClearRect
何かを描く前に。
しかし、影や塗りつぶしの色などが必要であるということだと思います。その楕円にのみ適用され、その後に描画するものには適用されません。そのためには、同じ状態設定メソッドを、異なる引数を使用して再度呼び出す必要があります。例えば、 CGContextSetShadowWithColor
影の色を期待します。でも、合格したら NULL
その引数では、シャドウイングが無効になります。
も参照してください。 CGContextSetShadow
ドキュメンテーション, には、シャドウイングを無効にするすべての方法に関するメモが記載されています。あなたにとって最適なものをお選びください。
あなたの主な問題は、Apple の優れたドキュメントを活用していないことだと思います。MonoTouch.net は基本的に、類似または同一のシンボル名を持つ .NET モジュールに Objective-C API をマップしていると考えられます。そのため、Google で簡単に検索すると、iPhone OS リファレンス ライブラリで対応するドキュメントを見つけることができるはずです。
他のヒント
私たちは描画を開始する前に、状態の保存:
CGContextSaveGState(ctx);
その後、我々が終了した後、それが最初にあったものに状態を返します
CGContextRestoreGState(ctx);