我有一个自定义视图,我正在使用 onDraw() 绘制到我的画布上。我正在此画布上绘制图像。
我想把图像倒置有点像在水平线上翻转作为参考。这与将图像旋转 180 度或 -180 度不同。
同样,我想镜像或侧向翻转,即使用垂直线作为枢轴或参考。同样,这与 canvas.rotate() 提供的不同。
我想知道该怎么做。我应该使用矩阵还是画布提供任何方法来做到这一点,比如“旋转”。
谢谢。
我有一个自定义视图,我正在使用 onDraw() 绘制到我的画布上。我正在此画布上绘制图像。
我想把图像倒置有点像在水平线上翻转作为参考。这与将图像旋转 180 度或 -180 度不同。
同样,我想镜像或侧向翻转,即使用垂直线作为枢轴或参考。同样,这与 canvas.rotate() 提供的不同。
我想知道该怎么做。我应该使用矩阵还是画布提供任何方法来做到这一点,比如“旋转”。
谢谢。
你不能直接用 Canvas 来做。在绘制位图之前,您需要实际修改位图(使用矩阵)。幸运的是,这是一个非常简单的代码:
public enum Direction { VERTICAL, HORIZONTAL };
/**
Creates a new bitmap by flipping the specified bitmap
vertically or horizontally.
@param src Bitmap to flip
@param type Flip direction (horizontal or vertical)
@return New bitmap created by flipping the given one
vertically or horizontally as specified by
the <code>type</code> parameter or
the original bitmap if an unknown type
is specified.
**/
public static Bitmap flip(Bitmap src, Direction type) {
Matrix matrix = new Matrix();
if(type == Direction.VERTICAL) {
matrix.preScale(1.0f, -1.0f);
}
else if(type == Direction.HORIZONTAL) {
matrix.preScale(-1.0f, 1.0f);
} else {
return src;
}
return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);
}