文章分类 -  Android_画图

摘要:平移、缩放、旋转等操作等于是,我在一个正的画布绘制好图,然后再把画布做旋转、平移、缩放等等的效果。也就是说,我使用的X、Y坐标还是正常的坐标(没旋转、平移、缩放等之前的坐标)。save()和restore()是用来规定操作的范围的。如果有save()和restore(),那么平移、缩放、旋转等操作只对save()和restore()作用域之间的代码有效。在此我参考了http://www.javaeye.com/topic/440623然后我做了代码测试(在onDraw()中画图),如下:protected void onDraw(Canvas canvas){//首先定义中心点和半径int p 阅读全文
posted @ 2011-11-24 16:12 Glan 阅读(153) 评论(0) 推荐(0)
摘要:android.graphics包是核心渲染包,它提供了一些初级图形工具,诸如画布、颜色过滤器、画笔等,可以让你直接在屏幕上进行图像处理。这个包中提供了很多类,下面我们就看一下这个包中主要的几个类。一、Canvas类android.graphics.CanvasCanvas类好比手机中的画纸,我们可以在Canvas上画图形或者图像。一般我们用android来绘画的时候,需要四个组成部分:1、位图:包含像素2、Canvas画板:包含绘画内容,写入位图3、初始图形:如Rect、Bitmap、text等4、Paint:用来描述上面初始图形的颜色和类型等Canvas类提供了三个构造方法:Public 阅读全文
posted @ 2011-11-24 16:11 Glan 阅读(607) 评论(0) 推荐(1)
摘要:在 Android View 中, 要绘制阴影可以利用 Paint 物件的 setShadowLayer函数.Java 代码 :public class helloWorld extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView( new drawCanvas(this) ); } class drawCanvas exten... 阅读全文
posted @ 2011-11-24 16:10 Glan 阅读(336) 评论(0) 推荐(0)
摘要:1. OpenGL ES 简介Android 3D引擎采用的是OpenGL ES。OpenGL ES是一套为手持和嵌入式系统设计的3D引擎API,由Khronos公司维护。在PC领域,一直有两种标准的3D API进行竞争,OpenGL 和 DirectX。一般主流的游戏和显卡都支持这两种渲染方式,DirectX在Windows平台上有很大的优势,但是OpenGL具有更好的跨平台性。由于嵌入式系统和PC相比,一般说来,CPU、内存等都比PC差很多,而且对能耗有着特殊的要求,许多嵌入式设备并没有浮点运算协处理器,针对嵌入式系统的以上特点,Khronos对标准的OpenGL系统进行了维护和改动,以期 阅读全文
posted @ 2011-11-24 15:45 Glan 阅读(205) 评论(0) 推荐(0)
摘要:3.4 OpenGL ES 执行过程运行android操作系统之后,输入logcat命令,然后执行gltest中的test-opengl-tritex,屏幕上打印了以下信息D/libEGL ( 1962): egl.cfg not found, using default configD/libEGL ( 1962): loaded /system/lib/egl/libGLES_android.so可以看出,在执行OpenGL调用的过程中,会自动加载libGLES_android.so动态链接库。后面将会通过分析和修改源码的方式,了解OpenGL ES系统的调用过程。通过3.3中的说明,我们 阅读全文
posted @ 2011-11-24 15:40 Glan 阅读(294) 评论(0) 推荐(0)
摘要:3.3 使用OpenGL ES画图必经的步骤 1、获取Display,Display代表显示器。 函数原型: EGLDisplay eglGetDisplay(NativeDisplayType display); display参数是native系统的窗口显示ID值,一般为 EGL_DEFAULT_DISPLAY 。该参数实际的意义是平台实现相关的,在X-Window下是XDisplay ID,在MS Windows下是Window DC。2、初始化egl库。 函数原型: EGLBoolean eglInitialize(EGLDisplay dpy, EGLint *major, EG.. 阅读全文
posted @ 2011-11-24 15:40 Glan 阅读(195) 评论(0) 推荐(0)
摘要:由我以上图表可以看出,加载驱动的时候,会尝试先从libGLES_android.so中加载EGL、GLESV1_CM、GLESV2三个部分的函数,如果加载失败,则会尝试从libEGL_android.so,libGLESV1_cm.so,libGLESV2.so三个动态库中对应的函数。在这部分代码中,我们可以看到一个非常重要的结构体,egl_connection_t,struct egl_connection_t{ void * dso; gl_hooks_t * hooks[2]; EGLint major; EGLint minor; egl_t egl;};到处都有他的身影,对这几个变量 阅读全文
posted @ 2011-11-24 15:39 Glan 阅读(277) 评论(0) 推荐(0)
摘要:看一下load_driver中到底做了什么手脚。1.首先调用dlopen打开动态链接库,返回值是void*,这个void*指向的是什么内容呢?追踪到bionic/linker/Dlfcn.c中。其中调用了find_library函数,这个函数是一个奇怪的函数,因为它虽然叫做find_library,在其实现中,不但在系统的so链表中去查找指定的文件名的动态链接库信息,而且对其动态链接库进行加载并返回。至此我们明白了,这个void* 指向的是一个soinfo类型的结构体这是man dlopen的说明。一个标准的linux函数。The function dlopen() loads the dyn 阅读全文
posted @ 2011-11-24 15:39 Glan 阅读(415) 评论(0) 推荐(0)
摘要:egl_connection_t的第二个变量是一个指针数组,类型是gl_hooks_t,从名字可以看出,它指向的是一组函数指针。跟踪一下struct gl_hooks_t { struct gl_t { #include "entries.in" } gl; struct gl_ext_t { void (*extensions[MAX_NUMBER_OF_GL_EXTENSIONS])(void); } ext;};这个entries.ini文件里全部是函数的一些原型。。证明了猜想。 cnx->hooks[GLESv1_INDEX] = &gHooks[GL 阅读全文
posted @ 2011-11-24 15:38 Glan 阅读(352) 评论(0) 推荐(0)
摘要:3.5 使用OpenGL ES硬件加速功能的方法使用硬件加速功能的OpenGL ES的方法。1.修改Loader.cpp文件里的Loader::loader函数,添加gConfig.add( entry_t(0, 1, "mmoid") );或者修改egl.cfg文件。此文件位于/system/lib/egl/下,如果不存在,可以自己动手新建。格式是“dpy impl tag”比如自己添加的硬件加速库是libGLES_mmoid.so,则需要在此文件里这样编写0 1 mmoid修改后腰重启才可生效。现在已经可以使用硬件加速功能了 阅读全文
posted @ 2011-11-24 15:37 Glan 阅读(136) 评论(0) 推荐(0)
摘要:大家好,这一节给大家分享的是Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等.废话少说了,直接讲解今天的实例,本例主要是先获取壁纸(getWallpaper()),然后对当前壁纸的一些特效处理.大家按步骤一步一步来:第一步:新建一个Android工程命名为ImageDemo:第二步:新建一个.java文件,命名为ImageUtil.java,在里面定义一些图片处理方法,代码如下:view plaincopy to clipboardprint?packagecom.android.tutor; 阅读全文
posted @ 2011-11-24 15:27 Glan 阅读(153) 评论(0) 推荐(0)