DrawBitMap이 3 비트 맵 그리기에 50-60 밀리 초가 걸린다면, 하나는 전체 화면을 차지하는 사각형이고, 하나는 원이고 다른 하나는 경로입니다. 내 비트 맵은 Bitmap.Config가 ARGB_8888 인 빈 비트 맵에 Canvas.drawPath, drawRect 및 drawCircle을 사용하여 만듭니다. ARGB_8888을 사용하여 레이어 효과를 얻기 위해 배경을 표시합니다. drawBitmap이 매우 간단한 작업이라고 생각하여 약 50ms의 시간이 걸렸다는 사실에 놀라움을 금치 못했습니다. 누군가가 가이드 할 수있는 근본적인 실수가 있습니까? 다음은안드로이드 DrawBitMap 사용시 매우 느림 ARGB_8888
canvas.drawBitmap(Rectangle,0,0,p);
canvas.translate(x,y); // For animation effect
canvas.drawBitmap(Circle,0,0,p);
canvas.drawBitmap(Leaf1,0,0,p);
의 OnDraw 비트 맵 그리기 적절한 비트 맵
Canvas c = new Canvas(Rectangle);
Paint p = new Paint();
p.setAntiAlias(true);
p.setColor(0xff6e8b3e);
c.drawRect(0,0,320,480,p);
Canvas c = new Canvas(Circle);
Paint p = new Paint();
CirclePath = new Path();
p.setAntiAlias(true);
p.setColor(0xffcd661d);
System.out.println("x = "+x+" y = "+y);
CirclePath.addCircle(50,50,10,Path.Direction.CW);
c.drawPath(CirclePath,p);
Canvas c = new Canvas(Leaf1);
Paint paint = new Paint();
Path path = new Path();
paint.setAntiAlias(true);
path.moveTo((float)184.37,(float)219.15);
path.cubicTo((float)188.32,(float)219.15,(float)192.88,(float)220.44,(float)195.62,(float)223.54);
path.cubicTo((float)197.84,(float)226.05,(float)203.2,(float)229.84,(float)198.18,(float)245.98);
에 도형 그리기
Rectangle = Bitmap.createBitmap(320,480,Bitmap.Config.ARGB_8888);
Circle = Bitmap.createBitmap(70,70,Bitmap.Config.ARGB_8888);
Leaf1 = Bitmap.createBitmap(20,30,Bitmap.Config.ARGB_8888);
을 빈 비트 맵 만들기 내 코드
입니다
이제이 3 개의 drawBitMap에 걸리는 시간을 기록합니다. 약 50ms 정도 걸리는 것으로 나타났습니다. 코드에 큰 실수가 있습니까? 비트 맵을 RGB_565로 변경하면 시간이 약 8ms가되지만 배경이 보이지 않고 경로 주위에 검정 상자가 생깁니다.
예 이미지 주위에 배경이 제대로 표시되도록하려면 알파 채널을 사용하고 있습니다. 네, 앤티 앨리어싱을 사용하기 때문에 회전 및 축척을 수행하는 것이 목표입니다. 기본적으로 벡터 그래픽 애니메이션을 수행하는 SVG 플레이어를 설계하므로 drawPath 함수를 사용하여 비트 맵을 구성한 다음 비트 맵을 각 프레임 –