【问题标题】:Draw Text on CameraPreview (Android)在 CameraPreview (Android) 上绘制文本
【发布时间】:2012-02-08 19:31:13
【问题描述】:

基本上我可以使用 View 在 CameraPreview 上绘制一个简单的文本:

    class DrawOnTop extends View {



    public DrawOnTop(Context context) {

            super(context);

            // TODO Auto-generated constructor stub

    }



    @Override

    protected void onDraw(Canvas canvas) {

            // TODO Auto-generated method stub



            Paint paint = new Paint();

            paint.setStyle(Paint.Style.FILL);

            paint.setColor(Color.BLACK);

            paint.setFakeBoldText(true);


            canvas.drawText("Test Text", 
                    30,
                    30, paint);

            super.onDraw(canvas);

    } 

}

但我想在相机预览的底部添加“toast”之类的内容,而不是像这样的简单文本。我可以举个例子来说明我的意思,看看这张图片:

http://www.lemacinaie.it/amiata/wp-content/uploads/2011/07/realta_aumentata.jpg

我想实现同样的目标,我已经尝试过 opengles 没有成功......有人可以帮忙吗?谢谢。

编辑:我能够在 GLSurfaceView 中绑定相机预览,我只需要知道如何在 OpenGLES 中绘制一个带有文本的框,就像吐司一样。谢谢

【问题讨论】:

    标签: android text opengl-es camera


    【解决方案1】:

    相机预览要么发送到 SurfaceView,要么以编码形式提供给您指定的自定义回调。 SurfaceView 不是为与其他小部件合成而设计的,因此您唯一的选择是自己解码预览并将其在屏幕外合成,然后再将其绘制到您自己的屏幕小部件(可以是 SurfaceView)。

    请参阅此3D-Compass 应用程序,了解如何进行离屏合成的示例,在这种情况下,OpenGL 图形与相机预览相结合。您应该能够根据需要调整源代码。

    【讨论】:

    • 感谢您的回答,我试图在我的手机上运行您的代码,但它引发了异常:02-08 12:17:40.207: E/AndroidRuntime(3738): nz.gen.geek_central。 Compass3D.EGLUseful$EGLException: EGL 创建 Pbuffer 表面失败,错误 12288 无论如何我已经用 OpenGLES 做了类似的事情。我知道如何绑定相机预览,我只需要像在该图像中那样绘制带有文本的框,而在“OnDraw”方法中我不知道该怎么做,就像吐司一样,在底部的预览。您能否举一个 OpenGLES 的示例来绘制我所要求的内容?感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2016-03-25
    • 1970-01-01
    相关资源
    最近更新 更多