Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android的OpenGL中实现scribble视图?_Android_Opengl Es_Handwriting - Fatal编程技术网

如何在android的OpenGL中实现scribble视图?

如何在android的OpenGL中实现scribble视图?,android,opengl-es,handwriting,Android,Opengl Es,Handwriting,我有一个android应用程序。我想使用OpenGL渲染我的图像并添加效果。我还想要一个单独的视图,用户可以在其中涂鸦。我希望视图的背景色是透明的。我还想在放大或缩小图像时进行放大和缩小。我想我应该使用glScalef()控制放大和缩小。但是当我放大视图时,我还需要增加笔的宽度。我想在openGL中编写这个视图。我不熟悉android和openGL。请把你的想法告诉我。 我尝试了一种不同的方法来实现在glSurfaceView上涂鸦的功能,同时能够放大和缩小。我已经在android提供的画布上完

我有一个android应用程序。我想使用OpenGL渲染我的图像并添加效果。我还想要一个单独的视图,用户可以在其中涂鸦。我希望视图的背景色是透明的。我还想在放大或缩小图像时进行放大和缩小。我想我应该使用
glScalef()
控制放大和缩小。但是当我放大视图时,我还需要增加笔的宽度。我想在openGL中编写这个视图。我不熟悉android和openGL。请把你的想法告诉我。

我尝试了一种不同的方法来实现在glSurfaceView上涂鸦的功能,同时能够放大和缩小。我已经在android提供的画布上完成了所有的涂鸦。在背景中,我有一个视频。在它上面我有一个潦草的观点(http://www.java2s.com/Code/Android/2D-Graphics/Classforthescribblememopad.htm). 我已将ScribbleView的背景设置为透明。完成涂鸦后,我使用按钮的onClickListener关闭涂鸦(当涂鸦关闭时,用户可以放大和缩小)。我可以使用scalegstruedetector.simpleOnScalegstrueListener放大或缩小。在它的
onScale()
中,我使用的是
mScaleFactor=(mScaleFactor*detector.getScaleFactor())其中mScaleFactor初始化为1f,mScaleFactor用于跟踪当前缩放因子。对于glSurface的缩放,我使用
glScalef(mScaleFactor,mScaleFactor)
,对于画布缩放,我使用
canvas.scale(mScaleFactor,mScaleFactor,getWidth()/2,getHeight()/2)
。我已经将轴心点设置到视图的中间,因为画布的坐标使其原点位于左上角。 在我放大或缩小画布后,为了正确的涂鸦,我在Scribble视图的onTouchEvent(事件)中为

event.getX() and event.getY(). <br>
x=(event.getX()- getWidth() / 2) / getmScaleFactor() + getWidth() / 2;<br>
y=(event.getX()- getWidth() / 2) / getmScaleFactor() + getWidth() / 2;<br>
<br>
event.getX()和event.getY()
x=(event.getX()-getWidth()/2)/getmScaleFactor()+getWidth()/2
y=(event.getX()-getWidth()/2)/getmScaleFactor()+getWidth()/2

现在,当我在放大或缩小的画布上涂鸦时,我可以在正确触摸屏幕的地方涂鸦
我希望我能给大家一些关于我的方法的见解


谢谢奎师那