iPhone初心者です。違う色の円を描きたいです。そして、すべての色が同じ面積をカバーする必要があります。10 種類の色を入れたい場合のように。次に、各色が円の 1/10 の領域をカバーする必要があります。ここで円グラフを描こうとしているわけではありません。また、10種類の色を使用しようとしないでください。円の 10 個の等しい部分が必要なだけで、各部分を色で塗りつぶすことができます。フォーチュン ホイールを作成しようとしています。小さな車輪が大きな車輪の上にあるように。そして、それらを別々にドラッグしたいと思います。また、Core Animation の助けを借りてこれを行うことは可能ですか?
2 に答える
あいまいな質問。10 個の等しい面積で円グラフを描くと、それぞれが面積の 1/10 をカバーするので、要求を満たしますよね?
円には 360° があるので、それを 10 で割ると、各くさびは 36° になります。ウェッジを 10 個描くだけで、このページが役に立ちます。
http://www.raywenderlich.com/2106/core-graphics-101-arcs-and-paths
パイのスライスはいらないと言うので、代わりに同心円が欲しいですか?
そして、あなたは等しい面積を望んでいますか? これにより、リングの太さが異なります。最も内側のリングはかなり厚く、外側に行くにつれて各リングは薄くなります。外側のリングでは、はるかに薄いです。
私たちの目は、各リングが同じ厚さであるブルズアイ フォーメーションに慣れています。
いずれにせよ、CAShapeLayer オブジェクトを確認する必要があります。2 つの円で閉じたパスを定義するリングごとにシェイプ レイヤーを作成できます。パスが重なったときに何が起こるかを決定できる「ワインディング ルール」と呼ばれるものがあります。偶奇パス ワインディング (kCAFillRuleEvenOdd) が必要だと思います。
リングを同じ面積にするには、次のようにします。
まず、円全体の面積を計算します。リングの数で割ります。それが各リングに必要な領域です。その領域を「a」と呼びましょう。中心からスタート。そのリング (円) の半径は sqrt(pi/a) になります。
次のリングごとに、外側の円の面積からリングを構成する内側の円の面積を引いた値に基づいて、リングの厚さを計算する必要があります。目的の領域と半径または前の円を指定して、外側の半径を解く方程式を作成する必要があります。