我有一个Android应用程序。我想使用OpenGL来渲染我的图像并添加效果。我也想要一个用户可以随意涂鸦的单独视图。我希望视图的背景颜色是透明的。我也想在放大或缩小图像时放大和缩小。我想我将使用glScalef()
控制放大和缩小。但是当我缩放(放大)视图时,我还需要增加笔的宽度。我想在openGL中编写这个视图。我是android和openGL的新手。请指导我的想法。
答案 0 :(得分:0)
我尝试了一种不同的方法来实现我在glSurfaceView上涂鸦的功能,同时能够放大和缩小。我已经完成了对普通android提供的所有涂鸦画布。在后台我有一个GLSurfaceView。最重要的是,我有一个涂鸦视图(http://www.java2s.com/Code/Android/2D-Graphics/Classforthescribblememopad.htm)。我已将ScribbleView的背景设置为TRANSPARENT。当我完成Scribbling时,我使用按钮的onClickListener关闭涂鸦(当涂鸦关闭时,用户可以放大和缩小)。我可以使用ScaleGestureDetector.SimpleOnScaleGestureListener放大或缩小。在onScale()
我正在使用mScaleFactor=(mScaleFactor * detector.getScaleFactor());
其中mScaleFactor初始化为1f,mScaleFactor用于跟踪当前的ScalingFactor。对于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>
现在,当我在放大或缩小的画布上涂鸦时,我可以在我正确触摸屏幕的位置涂鸦。
我希望我能够对你的方法有所了解。
谢谢克里希纳。