이 코드가 있습니다. matrix.prescale()과 행렬이 전달 된 createBitmap을 이해할 수 없습니다. 그게 무슨 소리 야? 매트릭스 계산을 이해할 수있는 시뮬레이션 웹 사이트가 있습니까? 그래픽에 사용되는 수학에 대한 웹 사이트를 제공해 줄 수 있습니까? 수학에 만족하지 못해 죄송합니다. :)행렬 계산을 명확하게 이해하십시오.
public Bitmap createReflectedImages(final Bitmap originalImage) {
final int width = originalImage.getWidth();
final int height = originalImage.getHeight();
final Matrix matrix = new Matrix();
matrix.preScale(1, -1);
final Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, (int) (height * imageReflectionRatio),
width, (int) (height - height * imageReflectionRatio), matrix, false);
final Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (int) (height + height * imageReflectionRatio + 400),
Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmapWithReflection);
canvas.drawBitmap(originalImage, 0, 0, null);
final Paint deafaultPaint = new Paint();
deafaultPaint.setColor(color.transparent);
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
final Paint paint = new Paint();
final LinearGradient shader = new LinearGradient(0, originalImage.getHeight(), 0,
bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
paint.setShader(shader);
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() + reflectionGap, paint);
return bitmapWithReflection;
}
내 소식을 수정 한 것으로 나타났습니다. 내가 대답 할 수있는 것이 더 많습니까? – Simon
이해 하기엔 너무 추상적이지만 괜찮습니다. 행렬 변환과 대수학을 이해하는 것이 어렵다는 것을 알게되었습니다. – Emerald214