canvas教程

[游戏软件开发基础]学习游戏软件开发需要哪些基础

字号+ 作者:H5之家 来源:H5之家 2017-08-18 16:00 我要评论( )

262阅读网,:终点的X,Y坐标最后一个参数:画笔实例6.drawLines(float[] pts,Paint paint)作用:绘制多条直线第一个参数:Float数组,数组中放置的是多个直线的起

篇一 : 学习游戏软件开发需要哪些基础

[游戏开发]学习游戏软件开发需要哪些基础——简介
做游戏开发得有思想有创意!当然记性也是主要的!开发软件的时候用的都是英语。而那些语句是你需要死记硬背的!所有的游戏都是代码组成的!不过只要你努力的话但是还是需要些基础。直接学!但是得努力学。

[游戏开发]学习游戏软件开发需要哪些基础——详细知识

[游戏开发]学习游戏软件开发需要哪些基础 一
基础编程:C/C++基础编程,WinAPI(windows programming),数据结构,游戏算法 ( Game Mathematics ),C/C++语言在游戏中的应用、游戏算法、数据结构和STL在游戏中的应用等。

[游戏开发]学习游戏软件开发需要哪些基础 二
DirectX图形编程:DirectX基础概念,Key Board及Mouse控制,预告篇控制,2D/3D图像输出,游戏效果音,游戏背景音乐,DirectX的Network Socket,OpenGL的图形编程应用。DirectX游戏网络编程应用,游戏开发人员的用户图形接口设计、MMORPG游戏服务器编程。人工智能技术在游戏编程中的应用等。

[游戏开发]学习游戏软件开发需要哪些基础 三
Socket 编程技术:掌握网络基础理论、关于数据通讯的基础概念、网络基础概念以及其Model等,Socket Programming入门、Socket Programming基础、Socket Programming高级、Application实验等,Socket Programming实战。

[游戏开发]学习游戏软件开发需要哪些基础 四
游戏服务器架设:游戏服务器架构设计,Windows2003、Unix、Linux服务器架设等。

[游戏开发]学习游戏软件开发需要哪些基础 五
高级编程实战:Java游戏程序开发,SQL服务器2000编程,利用XML编程网络游、Messenger、坦克、五子棋、象棋、俄罗斯方块等简单游戏的编程方法与技巧等。

[游戏开发]学习游戏软件开发需要哪些基础 六
项目实战开发:游戏服务器编程项目制作开发,游戏客户端编写、项目制作开发、游戏编程技巧、实时表现图形的窍门等。

篇二 : Android游戏开发基础part2--Canvas画布

游戏开发基础part2--Canvas画布

又过了一周才继续做总结,四级结束了,应该可以多点时间学习游戏编程了。(]

Canvas画布类是一个在游戏当中担当非常重要的角色,它可以绘制出不同的图形和图片,可以说没有了画布就不能做出画面炫丽的游戏。

下面总结一下画布类Canvas封装的常用的函数:

具体说明如下:

1.drawColor(int color)

作用:绘制颜色覆盖画布,常用于刷屏

参数:颜色值,也可用十六进制形式表示(ARGB)

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

作用:绘制文本字符

第一个参数:文本内容

第二、三个参数:文本的X,Y坐标

第四个参数:画笔实例

3.drawPoint(float x,float y,Paint paint)

作用:绘制像素点

第一、二个参数:像素的坐标

第三个参数:画笔实例

4.drawPoints(float[] pts,Paint paint)

作用:绘制多个像素点

第一个参数:Float数组,数组中放置的是多个像素点的X,Y坐标

第二个参数:画笔实例

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

作用:绘制一条直线

前两个参数:起点的X,Y坐标

后两个参数:终点的X,Y坐标

最后一个参数:画笔实例

6.drawLines(float[] pts,Paint paint)

作用:绘制多条直线

第一个参数:Float数组,数组中放置的是多个直线的起始点与终点X,Y坐标

第二个参数:画笔实例

7.drawRact(Rect r,Paint paint)

作用:绘制矩形

第一个参数:矩形实例

第二个参数:画笔实例

8.drawRoundRect(RectF rect,float rx,float ry,Paint paint)

作用:绘制圆角矩形

第一个参数:矩形实例

第二个参数:圆角X轴的半径

第三个参数:圆角Y轴的半径

第四个参数:画笔实例

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

作用:绘制圆形

第一、二个参数:圆形的中心点X,Y坐标

第三个参数:圆形的半径

第四个参数:画笔实例

10.drawArc(RectF oval,float startAngle,float sweepAngle,boolean useCenter,Paint paint)

作用:绘制弧形(扇形)

第一个参数:矩形实例

第二个参数:弧形的起始角度

第三个参数:弧形的终止角度

第四个参数:是否绘制中心点;如果为真,起始点与终止点都会分别连接中心点,从而形成封闭图形;如果为假,则起始点直接连到终止点,从而形成封闭图形。

第五个参数:画笔实例

11.drawOval(RectF oval,Paint paint)

作用:绘制椭圆

第一个参数:矩形实例

第二个参数:画笔实例

12.drawPath(Path path,Paint paint)

作用:绘制指定路径图形

第一个参数:路径实例

第二个参数:画笔实例

13.drawTextOnPath(String text,Path path,float hOffset,float vOffset,Paint paint)

作用:将文本沿着指定路径进行绘制

第一个参数:文本

第二个参数:路径实例

第三个参数:文本距离绘制起点的距离

第四个参数:文本距离路径的距离

第五个参数:画笔实例

 

创建项目实例:CanvasProject

项目运行效果图:

canvas2游戏 Android游戏开发基础part2--Canvas画布

项目代码:

==>MySurfaceView.java

package com.cp; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PaintFlagsDrawFilter; import android.graphics.Path; import android.graphics.Rect; import android.graphics.RectF; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.SurfaceHolder.Callback; /** * * @author Himi * */ public class MySurfaceView extends SurfaceView implements Callback, Runnable { //用于控制SurfaceView private SurfaceHolder sfh; //声明一个画笔 private Paint paint; //声明一条线程 private Thread th; //线程消亡的标识位 private boolean flag; //声明一个画布 private Canvas canvas; //声明屏幕的宽高 private int screenW, screenH; //设置画布绘图无锯齿 private PaintFlagsDrawFilter pfd = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); /** * SurfaceView初始化函数 */ public MySurfaceView(Context context) { super(context); //实例SurfaceHolder sfh = this.getHolder(); //为SurfaceView添加状态监听 sfh.addCallback(this); //实例一个画笔 paint = new Paint(); //设置画笔颜色为白色 paint.setColor(Color.WHITE); //设置焦点 setFocusable(true); } /** * SurfaceView视图创建,响应此函数 */ @Override public void surfaceCreated(SurfaceHolder holder) { screenW = this.getWidth(); screenH = this.getHeight(); flag = true; //实例线程 th = new Thread(this); //启动线程 th.start(); } /** * 游戏绘图 */ public void myDraw() { try { canvas = sfh.lockCanvas(); if (canvas != null) { //----设置画布绘图无锯齿 canvas.setDrawFilter(pfd); //----利用填充画布,刷屏 canvas.drawColor(Color.BLACK); //----绘制文本 canvas.drawText("drawText", 10, 10, paint); //----绘制像素点 canvas.drawPoint(10, 20, paint); //----绘制多个像素点 canvas.drawPoints(new float[] { 10, 30, 30, 30 }, paint); //----绘制直线 canvas.drawLine(10, 40, 50, 40, paint); //----绘制多条直线 canvas.drawLines(new float[] { 10, 50, 50, 50, 70, 50, 110, 50 }, paint); //----绘制矩形 canvas.drawRect(10, 60, 40, 100, paint); //----绘制矩形2 Rect rect = new Rect(10, 110, 60, 130); canvas.drawRect(rect, paint); canvas.drawRect(rect, paint); //----绘制圆角矩形 RectF rectF = new RectF(10, 140, 60, 170); canvas.drawRoundRect(rectF, 20, 20, paint); //----绘制圆形 canvas.drawCircle(20, 200, 20, paint); //----绘制弧形 canvas.drawArc(new RectF(150, 20, 200, 70), 0, 230, true, paint); //----绘制椭圆 canvas.drawOval(new RectF(150, 80, 180, 100), paint); //----绘制指定路径图形 Path path = new Path(); //设置路径起点 path.moveTo(160, 150); //路线1 path.lineTo(200, 150); //路线2 path.lineTo(180, 200); //路径结束 path.close(); canvas.drawPath(path, paint); //----绘制指定路径图形 Path pathCircle = new Path(); //添加一个圆形的路径 pathCircle.addCircle(130, 260, 20, Path.Direction.CCW); //----绘制带圆形的路径文本 canvas.drawTextOnPath("PathText", pathCircle, 10, 20, paint); } } catch (Exception e) { // TODO: handle exception } finally { if (canvas != null) sfh.unlockCanvasAndPost(canvas); } } /** * 触屏事件监听 */ @Override public boolean onTouchEvent(MotionEvent event) { return true; } /** * 按键事件监听 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return super.onKeyDown(keyCode, event); } /** * 游戏逻辑 */ private void logic() { } @Override public void run() { while (flag) { long start = System.currentTimeMillis(); myDraw(); logic(); long end = System.currentTimeMillis(); try { if (end - start < 50) { Thread.sleep(50 - (end - start)); } } catch (InterruptedException e) { e.printStackTrace(); } } } /** * SurfaceView视图状态发生改变,响应此函数 */ @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } /** * SurfaceView视图消亡时,响应此函数 */ @Override public void surfaceDestroyed(SurfaceHolder holder) { flag = false; } }

扩展:canvas清除画布 / canvas 清空画布 / 清除canvas画布内容

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • HTML5 Canvas:初始Canvas,html5初始canvas

    HTML5 Canvas:初始Canvas,html5初始canvas

    2017-08-18 16:01

  • canvas实现百度地图个性化底图绘制

    canvas实现百度地图个性化底图绘制

    2017-08-18 13:03

  • 【特效】canvas黑客帝国特效

    【特效】canvas黑客帝国特效

    2017-08-18 12:03

  • 【canvas学习笔记4】绘制文字

    【canvas学习笔记4】绘制文字

    2017-08-18 08:00

网友点评
c