-2

私はいくつかの問題を抱えています。

Q アイコン (Android ロゴと言うシンプルなアイコン) があり、それらを単一の星の中心 (アイコン) に対して星型トポロジーに配置し、Android キャンバスに接続するとします。

ここに画像の説明を入力

どうすればいいですか?

正確なリンクはありますか?

アルゴリズム情報はありますか?

4

2 に答える 2

1

基本的にやりたいことは、中心の周りに点を作成し、点にアイコンと中心を結ぶ線を与えることです。
円上に 2 次元の点を作成するには、コサイン/サインを使用します。

double angle;
point.x = offsetX + radius*Math.cos(angle);
point.y = offsetY + radius*Math.sin(angle);

接触ごとに適切な値で角度を増分し、このような点を配列またはリストに格納します。
描画に関しては、アイコンをそのポイントを中心にして描画し ( yourCanvas.drawBitmap())、中心点まで線を描画します ( yourCanvas.drawLine())。

于 2011-12-20T13:13:26.033 に答える
0
public  void starTopology(Canvas mCanvas,int noOfFriends,float centerX,float centerY,int radious) {


        final double PI = 3.14;
        final double MARGIN = (2*PI)/noOfFriends;
        final double OFFSETX = centerX;
        final double OFFSETY = centerY;
        final int RADIUS = radious;

        float pointXCoord = 0;
        float pointYCoord = 0;
        double NextPositionOnCircumference = MARGIN;



        Paint myCustomizedBrush = new Paint();
        myCustomizedBrush.setAntiAlias(true);

        myCustomizedBrush.setColor(Color.WHITE);


        for(int i= 0; i < noOfFriends; i++){

            pointXCoord =  (float) (OFFSETX + RADIUS * Math.cos(NextPositionOnCircumference));
            pointYCoord  = (float) (OFFSETY + RADIUS * Math.sin(NextPositionOnCircumference));

            NextPositionOnCircumference += MARGIN;
            mCanvas.drawLine((float)OFFSETX, (float)OFFSETY, pointXCoord, pointYCoord, myCustomizedBrush);
            pointXCoord -= 10;
            pointYCoord -= 10;
            mCanvas.drawBitmap(Utility.FriendProfilePic.get(i), pointXCoord, pointYCoord, null);


        }
        mCanvas.drawCircle((float)OFFSETX, (float)OFFSETY, 5, myCustomizedBrush);

}

于 2011-12-22T11:45:12.130 に答える