精华内容
下载资源
问答
  • 1.Android图形编程基础

    2020-01-31 19:06:09
    文章目录主要知识点Android图形编程基本概念1.颜色对象2.画笔对象3.画布对象 主要知识点 Android图形编程基础 自定义View的实现方法 Paint和Canvas的使用方法 处理用户输入的方法 游戏程序的框架结构 数独游戏的...

    主要知识点

    • Android图形编程基础
    • 自定义View的实现方法
    • Paint和Canvas的使用方法
    • 处理用户输入的方法
    • 游戏程序的框架结构
    • 数独游戏的开发

    Android图形编程基本概念

    1.颜色对象

    • Color类
      • 表示方法
    int color1= Color.bule
    int Color2 = Color.argb(177,255,255,255,255)(透明度、红色、绿色、蓝色)
    在xml文件中定义颜色
    

    2.画笔对象

    • paint
      • 用于控制画笔的风格和颜色等方面的信息
      • paint.setColor(Color.blue)

    3.画布对象

    • Canvas
      • 该类代表着一块“画布”,可以在“画布”上绘制字符、图形和图片等内容
      • canvas.drawCircle(300,400,100,paint)

    自定义View的基本实现方法

    • 1.定义一个类
    • 2.复习View的onDraw函数
    • 3.在onDraw当中使用Canvas和Paint对象绘制图形
    展开全文
  • Android图形编程基本概念

    千次阅读 2016-05-26 20:47:34
    Android系统当中颜色的表示方法: 1.int color1 = Color.blue; 2.int color2 = Color.argb(177, 255, 255, 255); 3.在XML文件当中定义颜色 2.画笔对象 Paint 该类的对象用于控制画笔的风格和颜色等方面的...

    1.颜色对象

    Color

    Android系统当中颜色的表示方法:

    1.int color1 = Color.blue;

    2.int color2 = Color.argb(177, 255, 255, 255);

    3.在XML文件当中定义颜色


    2.画笔对象

    Paint

    该类的对象用于控制画笔的风格和颜色等方面的信息

    paint.setColor(Color.blue);


    3.画布对象

    该类代表着一块“画布”,可以在上面绘制字符、图形和图片等内容

    canvas.drawCircle(300, 400, 100, paint);



    自定义View的基本实现方法

    1.定义一个类,继承View

    2.复写View的onDraw函数

    3.在onDraw当中使用Canvas和Paint对象绘制图形


    Android坐标系:左上角为原点(向右向下为正方向)


    画一条线

    public class MyView extends View {
    
        public MyView(Context context) {
            super(context);
        }
    
        //当Android系统需要绘制一个View对象时,
        //就会调用该对象的onDraw方法
        @Override
        protected void onDraw(Canvas canvas) {
            Paint paint = new Paint();
            paint.setColor(Color.BLUE);
    
            canvas.drawLine(0, 0, 200, 200, paint);
            super.onDraw(canvas);
        }
    }

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    //        setContentView(R.layout.activity_main);
            setContentView(new MyView(this));
        }
    }



    (杂记:RadioButton里的属性android:button="@null"是去掉其前面的圆点)


    1.Paint的设置方法

    setAntiAlias:设置画笔的锯齿效果

    setStrokeWidth:设置空心的边框宽度

    setStyle:设置画笔风格,空心或者实心

    setARGB

    setTextSize

    setColor

    setAlpha

    getColor

    getAlpha


    2.使用Canvas绘制点、线和图形

    绘制直线:

    drawLine(float startX, float startY, float stopX, float stopY, Paint paint)

    绘制矩形:

    drawRect(float left, float top, float right, float bottom, Paint paint)

    绘制圆形:

    drawCircle(float cx, float cy, float radius, Paint paint)



    3.使用Canvas绘制文字

    使用Canvas绘制字符

    drawText(String text, float x, float y, Paint paint)

    y轴坐标并不是底部非坐标,而是基于基准线(并不是字符串的底部,比如是a的底部但不是p的底部等)




    4使用Canvas绘制图片的方法

    drawBitmap(Bitmap bitmap, float left, float top, Paint paint):



    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    //        setContentView(R.layout.activity_main);
            MyView myView = new MyView(this);
            setContentView(myView);
        }
    }

    public class MyView extends View {
    
        public MyView(Context context) {
            super(context);
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            Paint paint = new Paint();
            paint.setARGB(150, 0, 100, 200);
            //设置画笔风格为空心(默认为实心)
    //        paint.setStyle(Paint.Style.STROKE);
    //        paint.setStyle(Paint.Style.FILL);
            //设置空心的边框宽度
            paint.setStrokeWidth(10);
            paint.setTextSize(100);
            canvas.drawText("apple", 50, 200, paint);
            canvas.drawLine(0, 200, 500, 200, paint);
            canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher), 100, 300, paint);
    //        canvas.drawRect(100, 300, 300, 500, paint);
    //        canvas.drawCircle(200, 200, 150, paint);
            super.onDraw(canvas);
        }
    }





    展开全文
  • Android图形编程基础

    2015-04-04 08:59:00
    该类代表在一块“画布”,可以在画布上绘制字符,图形,图片等内容; canvas.drawCircle(300, 400, 100, paint); 自定义View的基本实现方法 1.定义一个类,继承View; 2.复写View的onDraw函数; 3...

    转载请注明出处

    Color

    //方法1
    		int color1 = Color.BLUE;
    		//方法2
    		int color2 = Color.argb(177, 255,255,255);
    		//方法3:在xml里面定义颜色


    Paint

    该类的对象用于控制画笔的风格和颜色等方面的信息

    paint.setColor(Color.BLUE);

    Canvas

    该类代表在一块“画布”,可以在画布上绘制字符,图形,图片等内容;

    canvas.drawCircle(300, 400, 100, paint);
    
    自定义View的基本实现方法

    1.定义一个类,继承View;

    2.复写View的onDraw函数;

    3.在onDraw当中使用Canvas和Paint对象绘制图形;

    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		//setContentView(R.layout.activity_main);
    		setContentView(new MyView(this));
    	}
    
    
    }

    import android.R.color;
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.view.View;
    
    public class MyView extends View {
    
    	public MyView(Context context) {
    		super(context);
    		// TODO Auto-generated constructor stub
    	}
    //当Android系统需要绘制一个View对象时,就会调用该对象的onDraw
    	@Override
    	protected void onDraw(Canvas canvas) {
    		
    		Paint paint = new Paint();
    		paint.setColor(Color.BLUE);
    		canvas.drawLine(0, 0, 200, 200, paint);
    		super.onDraw(canvas);
    	}
    
    	
    }



    展开全文
  • Android图形编程篇--绘制基础图形

    千次阅读 2019-01-23 16:20:34
    3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Graphics Pipeline,大多译为管线,实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程)管理的。图形渲染管线可以被...

    介绍:

           在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素。3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Graphics Pipeline,大多译为管线,实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程)管理的。图形渲染管线可以被划分为两个主要部分:第一部分把你的3D坐标转换为2D坐标,第二部分是把2D坐标转变为实际的有颜色的像素。这篇博客中将讨论如何使用openGL进行简单的图像绘制。

           图形渲染管线可以被划分为几个阶段,每个阶段将会把前一个阶段的输出作为输入。所有这些阶段都是高度专门化的(它们都有一个特定的函数),并且很容易并行执行。正是由于它们具有并行执行的特性,当今大多数显卡都有成千上万的小处理核心,它们在GPU上为每一个(渲染管线)阶段运行各自的小程序,从而在图形渲染管线中快速处理你的数据。这些小程序叫做着色器(Shader)。

    顶点数据:

           我们以数组的形式传递3个3D坐标作为图形渲染管线的输入,用来表示一个三角形,这个数组叫做顶点数据(Vertex Data);顶点数据是一系列顶点的集合。一个顶点(Vertex)是一个3D坐标的数据的集合。而顶点数据是用顶点属性(Vertex Attribute)表示的,它可以包含任何我们想用的数据,但是简单起见,我们还是假定每个顶点只由一个3D位置(译注1)和一些颜色值组成的吧。

           为了让OpenGL知道我们的坐标和颜色值构成的到底是什么,OpenGL需要你去指定这些数据所表示的渲染类型。我们是希望把这些数据渲染成一系列的点?一系列的三角形?还是仅仅是一个长长的线?做出的这些提示叫做图元(Primitive),任何一个绘制指令的调用都将把图元传递给OpenGL。这是其中的几个:GL_POINTS、GL_TRIANGLES、GL_LINE_STRIP。图形渲染管线的第一个部分是顶点着色器(Vertex Shader),它把一个单独的顶点作为输入。顶点着色器主要的目的是把3D坐标转为另一种3D坐标(后面会解释),同时顶点着色器允许我们对顶点属性进行一些基本处理。图元装配(Primitive Assembly)阶段将顶点着色器输出的所有顶点作为输入(如果是GL_POINTS,那么就是一个顶点),并所有的点装配成指定图元的形状;几何着色器的输出会被传入光栅化阶段(Rasterization Stage),这里它会把图元映射为最终屏幕上相应的像素,生成供片段着色器(Fragment Shader)使用的片段(Fragment)。在片段着色器运行之前会执行裁切(Clipping)。裁切会丢弃超出你的视图以外的所有像素,用来提升执行效率。

           定义这样的顶点数据以后,我们会把它作为输入发送给图形渲染管线的第一个处理阶段:顶点着色器。它会在GPU上创建内存用于储存我们的顶点数据,还要配置OpenGL如何解释这些内存,并且指定其如何发送给显卡。顶点着色器接着会处理我们在内存中指定数量的顶点。

           我们通过顶点缓冲对象(Vertex Buffer Objects, VBO)管理这个内存,它会在GPU内存(通常被称为显存)中储存大量顶点。使用这些缓冲对象的好处是我们可以一次性的发送一大批数据到显卡上,而不是每个顶点发送一次。从CPU把数据发送到显卡相对较慢,所以只要可能我们都要尝试尽量一次性发送尽可能多的数据。当数据发送至显卡的内存中后,顶点着色器几乎能立即访问顶点,这是个非常快的过程。

           顶点缓冲对象是我们在OpenGL教程中第一个出现的OpenGL对象。就像OpenGL中的其它对象一样,这个缓冲有一个独一无二的ID,所以我们可以使用glGenBuffers函数和一个缓冲ID生成一个VBO对象:

           unsigned int VBO;

           glGenBuffers(1, &VBO);

     OpenGL有很多缓冲对象类型,顶点缓冲对象的缓冲类型是GL_ARRAY_BUFFER。OpenGL允许我们同时绑定多个缓冲,只要它们是不同的缓冲类型。我们可以使用glBindBuffer函数把新创建的缓冲绑定到GL_ARRAY_BUFFER目标上:

           glBindBuffer(GL_ARRAY_BUFFER, VBO);

    然后我们可以调用glBufferData函数,它会把之前定义的顶点数据复制到缓冲的内存中:

          glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

    第四个参数指定了我们希望显卡如何管理给定的数据。它有三种形式:

    • GL_STATIC_DRAW :数据不会或几乎不会改变。
    • GL_DYNAMIC_DRAW:数据会被改变很多。
    • GL_STREAM_DRAW :数据每次绘制时都会改变。

    三角形的位置数据不会改变,每次渲染调用时都保持原样,所以它的使用类型最好是GL_STATIC_DRAW。如果,比如说一个缓冲中的数据将频繁被改变,那么使用的类型就是GL_DYNAMIC_DRAW或GL_STREAM_DRAW,这样就能确保显卡把数据放在能够高速写入的内存部分。

    顶点着色器(Vertex Shader)

         我们需要做的第一件事是用着色器语言GLSL(OpenGL Shading Language)编写顶点着色器,然后编译这个着色器,这样我们就可以在程序中使用它了。下面你会看到一个非常基础的GLSL顶点着色器的源代码:

    #version 330 core
    layout (location = 0) in vec3 aPos;
    
    void main()
    {
        gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);
    }
    

    可以看到,GLSL看起来很像C语言。每个着色器都起始于一个版本声明。

    我们首先要做的是创建一个着色器对象,注意还是用ID来引用的。所以我们储存这个顶点着色器为unsigned int,然后用glCreateShader创建这个着色器:

               unsigned int vertexShader;

               vertexShader = glCreateShader(GL_VERTEX_SHADER);

               glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);

               glCompileShader(vertexShader);

    glShaderSource函数把要编译的着色器对象作为第一个参数。第二参数指定了传递的源码字符串数量,这里只有一个。第三个参数是顶点着色器真正的源码,第四个参数我们先设置为NULL

    片段着色器(Fragment Shader)

              片段着色器所做的是计算像素最后的颜色输出。   

             编译片段着色器的过程与顶点着色器类似,只不过我们使用GL_FRAGMENT_SHADER常量作为着色器类型:

             unsigned int fragmentShader;

             fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);

             glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);

             glCompileShader(fragmentShader);

    着色器程序对象(Shader Program Object)

            如果要使用刚才编译的着色器我们必须把它们链接(Link)为一个着色器程序对象,然后在渲染对象的时候激活这个着色器程序。已激活着色器程序的着色器将在我们发送渲染调用的时候被使用。

           unsigned int shaderProgram;

           shaderProgram = glCreateProgram();

           glAttachShader(shaderProgram, vertexShader);

           glAttachShader(shaderProgram, fragmentShader);

           glLinkProgram(shaderProgram);

    得到的结果就是一个程序对象,我们可以调用glUseProgram函数,用刚创建的程序对象作为它的参数,以激活这个程序对象:

           glUseProgram(shaderProgram);

    在glUseProgram函数调用之后,每个着色器调用和渲染调用都会使用这个程序对象(也就是之前写的着色器)了。在把着色器对象链接到程序对象以后,记得删除着色器对象,我们不再需要它们了:

           glDeleteShader(vertexShader); glDeleteShader(fragmentShader);

     至此,一个简单的基础图形绘制便完成了。    

    展开全文
  • Android图形编程(1):Canvas使用

    千次阅读 2013-12-27 21:23:58
    本文仅作简单示意,表达不清处,请谅解! Canvas基本使用: Canvas.drawPath(Path, Paint); Canvas.drawBitmap(Bitmap, 0, 0, Paint); => Canvas.draw??(??,Paint); //canvas使用所需三要素:Canvas,...画在当前
  • Android图形编程基础 文章目录Android图形编程基础Paint的设置方法使用Canvas绘制点、线、图形使用Canvas绘制文字使用Canvas绘制图片实例代码 Paint的设置方法 setAntiAlias:设置画笔的锯齿效果 setColor:设置...
  • android图形系统编程学习 可以帮你刚好的学习android的学习
  • 标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]C语言图形编程C的图形编程一、屏幕显示模式1、文本模式在文本模式又称字符模式。在此模式下整个屏幕被划分成(25行,80...
  • Android游戏编程之基本图形编程

    千次阅读 2013-02-04 22:44:24
    以下均转自Android游戏编程入门经典,转载请标明出处 使用位图 加载和检查位图:Bitmap类我们可通过BitmapFactory单元素就可以从文件加载位图。 由于我们将图像以资源形式储存,因此我们从assets/目录加载一幅...
  • Android图形编程基础 文章目录Android图形编程基础画笔Paint的画布Canvas自定义View的基本实现方法实例代码 绘图绘图,首先要有的就是颜色Color Android系统中颜色的表示方法: int color1 = Color.blue; int color...
  • OpenGLES2.0游戏与图形编程适用于iOS 和Android [(美)RomainMarucchi-Foino 著] 2014年版例子源码。
  • OpenGL ES (OpenGL for Embedded Systems) 是OpenGL三维胆形API的子栠, 专门针对手机、 PDA和游戏主机等嵌入式设备而设计, 目前已有越来越多的开发人员选用 OpenGL ES进行游戏和图形编程
  • 在3D图形领域,Khronos负责OpenGL,OpenGL ES,WebGL,OpenCL,以及新一代接口Vulkan等图形编程接口标准的制定。 2. Vulkan 目前尚未正式发布的 Vulkan 是开放标准组织Khronos进军底层图形 API 领域的重要标志。这项...
  • android图形编程_计算BMI值

    千次阅读 2011-12-01 13:28:51
    第一次在android平台上做图形编程,特做笔记,以便加深印象及后续查阅。此程序来自《深入浅出android》 1、 新建工程,file—new—android project,输入工程名helloandroid01,package名称为com.android.hello ...
  • 圆点博士Android编程系列之一:走进Android图形编程软件MIT App Inventor 待续。。。
  • Java的图形编程

    千次阅读 2012-09-24 21:50:57
    Java为图形编程提供了丰富的类和接口,而这些类和接口放在java.awt和javax.swing两大包里。本文主要探讨Java图像编程的基本概念和重要思想。  1 基本概念  组件:集成了一定的功能模块,提供了公用的接口以便...
  • OpenGLES2.0游戏与图形编程适用于iOS 和Android [(美)RomainMarucchi-Foino 著] 2014年版,原版电子书籍,适合于需要学习OpenGL ES的同志们参考
  • 副标题: 适用于iOS和Android 原作名: Game and Graphics Programming for iOS and Android with OpenGL ES 2.0 译者: 王净 译. 出版年: 2014-2 页数: 288 装帧: 平装 ISBN: 9787302352303
  • 近两年,学习编程的热潮一波接一波,编程语言也是五花八门。...本周,盒子姐姐就来解决这个疑难杂症,给大家科普当下最火爆的编程语言~图形编程首先就是各位宝宝们最常听到的图形编程啦!图形编程...
  • OpenGLES2.0游戏与图形编程适用于iOS 和Android [(美)RomainMarucchi-Foino 著] 2014年版.pdf
  • 移动终端-游戏程序-程序设计 Ⅳ. ①TN929.53 ②TP311.5
  • android图形系统编程学习(一)入门

    千次阅读 2010-05-15 16:19:00
    这几篇Android 3D游戏开发的文章原文出自一位德国人Martin 在droidnova.com写的文章,有...这个教程主要focus在3D编程上,其他的东西比如菜单和程序生命周期虽然是代码的一部分,但是在这里不会被提到。首先开始介绍Op
  • android编程图形绘制

    千次阅读 2012-04-05 22:36:11
    android课堂作业要求做个五子棋游戏,想想如果直接用控件可能速度会比较慢,因此就想用比较常规的游戏编程方法,屏幕绘制.今天查了些资料,并做个整理. 跟其他的屏幕绘制机制一样,android屏幕绘制也需要画布,其次还...
  • android图形系统编程学习(二)入门

    千次阅读 2010-05-15 16:34:00
    这几篇Android 3D游戏开发的文章原文出自一位德国人Martin在droidnova.com写的文章,有lixinso翻译为中文。这个系列的第二部分是关于如何添加一个三角形并可以旋转它。第一件事情是初始化需要显示的三角形。我们来在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,000
精华内容 14,800
关键字:

安卓图形编程