Android矩阵对齐

时间:2014-04-02 12:39:24

标签: android matrix android-canvas

我想制作以下画布: 在给定点绘制N个位图,但每个位图应以随机角度旋转。

我尝试这样的事情:

    for(int i=0;i<point_count;i++){
        star_matrix[i] = new Matrix();

        Random rand2 = new Random();
        int degree = rand2.nextInt(45);  

        star_matrix[i].postRotate(degree); 
        star_matrix[i].postTranslate(level.points[i].x - star1_size/2, level.points[i].y-star1_size/2);
    }

然后我创建一个位图

star1  = BitmapFactory.decodeResource(getResources(), R.drawable.star1_small);
star1  = Bitmap.createScaledBitmap(star1, star1_size,star1_size, true);

并在周期中绘制所有内容:

for(int i=0;i<point_count;i++){
    canvas.drawBitmap(star1, star_matrix[i], gradPaint);
}

所有位图都错过了正确的位置。所有人都转移到不同的地方。

例如,这个没有矩阵的代码会绘制所有的东西(但没有旋转)

for(int i=0;i<point_count;i++){
   canvas.drawBitmap(star1, level.points[i].x - star1_size/2,  level.points[i].y-star1_size/2, pathPaint);
}

如何解决Matrix问题?

1 个答案:

答案 0 :(得分:0)

我认为更改以下行的重新排序应该会有所帮助:

    star_matrix[i].postTranslate(level.points[i].x - star1_size/2, level.points[i].y-star1_size/2);
    star_matrix[i].postRotate(degree); 

因为轮换和翻译的顺序很重要。