[英]Java Android - Rotate bitmap after drawn
我已经为多个位图,矩阵和绘画制作了数组列表,我想在主线程中动态更改它们。 这是我的画图(剪切一些代码以缩短它):
public DrawView(Context context, AttributeSet attrs){
bitmapArray.add(bitmap1);
Matrix matrix2 = new Matrix();
matrixArray.add(matrix2);
Paint paint = new Paint();
paintArray.add(paint);
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (int i = 0; i < 50; i++) {
canvas.drawBitmap(bitmapArray.get(i), matrixArray.get(i), paintArray.get(i));
}
}
public void translate(int Num, float x, float y){
matrixArray.get(Num).postTranslate(x,y);
}
我想要的是从主线程调用drawview.translate,如下所示:
drawView.translate(Num, image.getX(), image.getY()); //image is a moving imageview
我对使用主线程控制绘制的位图没有太多了解,所以如果有人可以解释,我将不胜感激
我终于找到了一种绘制位图并在命令中移动/旋转它的方法:
在我的OnDraw(){
canvas.drawBitmap(bitmap1, null, rectf, sPaint);
可使用rectF移动,并旋转:
rotation = ((float) Math.toDegrees(Math.atan2((fingery - rectf.centerY()),(fingerx - rectf.centerX())));
matrix.setRotate(rotation2+90, rectf.centerX(), rectf.centerY());
bitmap1 = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true);
当我旋转位图时,它遇到了麻烦,它改变了大小。 我使用以下方法修复了它:
rectf.right = rectf.centerX() + bitmap1.getWidth()/2;
rectf.left = rectf.centerX() - bitmap1.getWidth()/2;
rectf.top = rectf.centerY() - bitmap1.getHeight()/2;
rectf.bottom = rectf.centerY() + bitmap1.getHeight()/2;
我希望这对某些人有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.