我想制作以下画布: 在给定点绘制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问题?
答案 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);
因为轮换和翻译的顺序很重要。