나는 손가락으로 선을 그릴 수 있고 색상, 두께 등을 조정할 수있는 그리기 응용 프로그램이 있습니다. 사용자가 그림을 그리면서 매끄러운 X/Y 포인트를 MotionEvent
에서 SVG PathsAndroid Path's을 생성 한 다음 Canvas를 통해 안드로이드 경로를 화면에 드로잉하고 SVG 경로를 앱의 데이터베이스에 위탁합니다.Android : Canvas vs OpenGL
나는 '진행'라인 invalidate()
(따라서, onDraw()
)에 반복 호출에 의해 즉석에서 그려 점에서 FingerPaint에 사용되는 모델을, 다음하고, 그리고 라인이 완료되고 나면 새로운 라인이 시작됩니다 이전 줄은 그 밑에있는 Canvas
Bitmap
에서 onDraw()
으로 그려지고 진행중인 줄은 다시 다시 그려집니다.
이것은 기기 회전을 보정하고 드로잉 표면을 '확대'할 수있는 기능을 지원하기 위해 기초적인 Bitmap
을 회전하기 시작할 때까지 기본이되는 Bitmap
등의 크기를 조정해야합니다. 따라서 예를 들어 장치를 회전하고 그림의 크기를 조절하면 사용자가 그림을 그릴 때 비트 맵을 onDraw()에서 크기를 조정하고 회전해야하며 이는 절대적으로 크롤링입니다.
나는 SurfaceView
을 보았지만 여전히 동일한 Canvas
메커니즘을 사용하기 때문에 눈에 띄는 개선이있을 것이라고 확신하지는 못합니다 ... 그래서 내 생각은 OpenGL로 바뀝니다. 나는 OpenGL이 본질적으로 '자유로운'회전과 스케일링을 할 수있는 곳을 읽었으며 심지어 Canvas
이 향후 버전에서는 사라질 수도있는 rumors (3 번째 의견)을 보았습니다.
본질적으로 나는 Canvas
과 OpenGL 솔루션 사이에 약간 붙어 있습니다 ... 저는 한 상태에서 Canvas
모델에 완벽하게 맞는 2D 드로잉 응용 프로그램을 가지고 있습니다. 상수가 다시 그리는 것과 같이 계속 진행됩니다. 예를 들어 사용자가 드로잉을하지 않을 때 다시 그리기가 필요하지 않은 경우), 사용자가 그림을 그릴 때 점점 더 복잡 해지는 작업을 수행하는 데 필요한 최대 성능이 필요합니다.
생각, 조언 및 제안을 환영합니다.
운 좋게도, 안드로이드 경로만으로 텍스트를 작성하지 않으므로 텍스트 문제가 발생하지 않을 수 있습니다. –