我有自定义视图。它有许多四边形(不是矩形)。我必须为每个四边形绘制位图。现在,我正在使用矩阵将位图绘制为四边形,但它是扭曲的。像这样:
float[] src = new float[] {
0.0f, 0.0f,
0.0f, (float) trimBitmap.getHeight(),
(float) trimBitmap.getWidth(), (float) trimBitmap.getHeight(),
(float) trimBitmap.getWidth(), 0.0f };
float[] dst = new float[] {
frame.get(0).x * ratio, frame.get(0).y * ratio,
frame.get(1).x * ratio, frame.get(1).y * ratio,
frame.get(2).x * ratio, frame.get(2).y * ratio,
frame.get(3).x * ratio, frame.get(3).y * ratio };
matrix.setPolyToPoly(src, 0, dst, 0, 4);
canvas.drawBitmap(trimBitmap, matrix, picturePaint);
我正在尝试使用BitmapShader,但不知道它是如何工作的? 对我有什么建议吗?
编辑我正在尝试像这样使用BitmapShader
Path path = new Path();
path.moveTo(picture.getFrame().get(0).x * ratio, picture.getFrame().get(0).y * ratio);
path.lineTo(picture.getFrame().get(1).x * ratio, picture.getFrame().get(1).y * ratio);
path.lineTo(picture.getFrame().get(2).x * ratio, picture.getFrame().get(2).y * ratio);
path.lineTo(picture.getFrame().get(3).x * ratio, picture.getFrame().get(3).y * ratio);
path.lineTo(picture.getFrame().get(0).x * ratio, picture.getFrame().get(0).y * ratio);
BitmapShader shader = new BitmapShader(trimBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
picturePaint.setShader(shader);
canvas.drawPath(path, picturePaint);
感谢。