【问题标题】:Android matrix aligningAndroid矩阵对齐
【发布时间】:2026-01-27 01:05:01
【问题描述】:

我想制作以下画布: 在给定点绘制 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);
}

如何解决矩阵问题?

【问题讨论】:

    标签: android matrix android-canvas


    【解决方案1】:

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

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

    因为旋转和平移的顺序很重要。

    【讨论】: