繁体   English   中英

Java Android-绘制后旋转位图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM