5

このコードで素敵な影のある円を作成します(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にあります。私は画像を作成しています)

4

2 に答える 2

13

描画されたものをすべてクリアして空白のキャンバスを作成する場合は、CGContextClearRect何かを描画する前に試してください。

ただし、シャドウや塗りつぶしの色などは、その楕円にのみ適用し、後で描画するものには適用しないことを意味していると思います。これを行うには、同じ状態設定メソッドを再度呼び出しますが、引数は異なります。たとえばCGContextSetShadowWithColor、影の色が必要です。しかし、NULLその引数を渡すと、シャドウイングが無効になります。

シャドウイングを無効にするすべての方法についての注記が記載されているCGContextSetShadowドキュメントも参照してください。あなたに最適なものを選んでください。

あなたの主な問題は、Appleの優れたドキュメントを利用していないことだと思います。私は、MonoTouch.netが基本的にObjective-CAPIを類似または同一のシンボル名を持つ.NETモジュールにマップしていることを収集しました。したがって、グーグルですばやく検索すると、iPhoneOSリファレンスライブラリで対応するドキュメントを見つけることができるはずです。

于 2010-01-19T00:42:43.850 に答える
2

描画を開始する前に、状態を保存します。

CGContextSaveGState(ctx);

次に、終了したら、状態を最初の状態に戻します。

CGContextRestoreGState(ctx);
于 2010-01-19T13:22:49.503 に答える