2

従来の方法とは少し違う方法で円グラフを描画しようとしています。パイは何があっても等しいピースを持っていますが、各ピースの半径は異なります。したがって、すべての円弧は1つのポイントの中心にありますが、半径は異なります。

これがその簡略化されたコードです。

rect1 = new RectF(0,0,8,8)
rect2 = new RectF(0,0,6,6)
rect3 = new RectF(0,0,4,4)
rect4 = new RectF(0,0,2,2)

canvas.drawArc(rect1,0,90,true, paint)
canvas.drawArc(rect2,90,90,true, paint)
canvas.drawArc(rect3,180,90,true, paint)
canvas.drawArc(rect4,270,90,true, paint)

これにより、すべての正しい円弧が作成されますが、すべての円弧のポイントが同じ場所の中心に配置されるわけではありません。これは、RectFクラスがどのように機能するかによるものだと理解しています。

だから私の質問は、キャンバスの中央にこれらの異なるアークを並べることができますか?これを行うために使用できるアークオフセットはどこかにありますか?

この解決策をペイントで試しましたが、失敗しました。どんな提案も役に立ちます!

4

1 に答える 1

4

これらの長方形をどのように配置するかというだけでなく、「RectFクラスがどのように機能するか」に実際に基づいているわけではありません。これらすべての長方形の左上をに揃える代わりに(0, 0)、中央を揃えます。少し基本的な数学でこれが得られます。中心点(centerX, centerY)と半径を仮定するとradius、左側がになりcenterX - radius、上部がcenterY - radius右側になりcenterX + radius、下部がになりますcenterY + radius。同じ中心点と異なる半径を持つ各長方形に対してこれを行うと、当然のことながら、同じ中心を持つ円弧になります。

于 2013-01-09T21:37:06.260 に答える