Como desenhar um bitmap para outro, mas em um determinado quadrilátero (não é necessário um retângulo)?
Suponha que eu tenha 2 bitmaps. Um é smallBitmap e o outro é largeBitmap.
Quero desenhar o smallBitmap inteiro em largeBitmap, mas apenas para uma parte do largeBitmap, e não em um emaranhado reto, mas em umquadrilátero em vez de.
Acho que um esboço descreve melhor o que quero dizer:
Um exemplo desse cenário é uma imagem inclinada de smartphone (comoesta ouesta), é necessário colocar uma captura de tela em sua tela.
A entrada é: smallBitmap, largeBitmap, coordenadas "quadrilaterais" do largeBitmap (onde colocar o smallBitmap).
O "quadrilátero" do largeBitmap possui apenas 4 coordenadas e não é necessário um retângulo. Pode ser um paralelogramo ou trapézio, por exemplo.
Preciso dimensionar o smallBitmap no quadrilátero dentro do largeBitmap e também oferecer suporte à escala de corte central, para que não fique distorcida
Também preciso saber como tratar os textos da mesma maneira, mas acho que é sobre a mesma solução.
Aqui está uma coisa que eu tentei, mas ela nem escala:
//mBigBitmap: size is 720x1280
//mSmallBitmap: size is 720x720
mLeftTop = new Point(370, 358);
mRightTop = new Point(650, 384);
mLeftBot = new Point(375, 972);
mRightBot = new Point(660, 942);
Canvas canvas = new Canvas(mBigBitmap);
final Matrix matrix = new Matrix();
matrix.setPolyToPoly(new float[]{0, 0,
mBigBitmap.getWidth() - 1, 0,
0, mBigBitmap.getHeight() - 1,
mBigBitmap.getWidth() - 1, mBigBitmap.getHeight() - 1},
0,
new float[]{mLeftTop.x, mLeftTop.y,
mRightTop.x, mRightTop.y,
mLeftBot.x, mLeftBot.y,
mRightBot.x, mRightBot.y
}
, 0, 4);
canvas.drawBitmap(mSmallBitmap, matrix, new Paint());