SufaceView(绘图类)

public class MainActivity extends Activity {

GrameView grameView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

grameView=new GrameView(this);

setContentView(grameView);

}

public boolean onKeyDown(int code,KeyEvent event) {

switch (code) {

case KeyEvent.KEYCODE_DPAD_DOWN:

grameView.y+=3;

break;

case KeyEvent.KEYCODE_DPAD_UP:

grameView.y-=3;

break;

default:

break;

}

return true;

}

}

package com.example.examples_05_02_01;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

public class GrameView extends SurfaceView implements SurfaceHolder.Callback,Runnable {

//控制循环

boolean mbLoop = false;

//定义SurfaceHolder对象

SurfaceHolder mSurfaceHolder = null;

int miCount = 0;

int y = 50;

public GrameView(Context context)

{

super(context);

// 实例化SurfaceHolder

mSurfaceHolder = this.getHolder();

// 添加回调

mSurfaceHolder.addCallback(this);

this.setFocusable(true);

mbLoop = true;

}

// 在surface的大小发生改变时激发

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)

{

}

// 在surface创建时激发

public void surfaceCreated(SurfaceHolder holder)

{

//开启绘图线程

new Thread(this).start();

}

// 在surface销毁时激发

public void surfaceDestroyed(SurfaceHolder holder)

{

// 停止循环

mbLoop = false;

}

// 绘图循环

public void run()

{

while (mbLoop)

{

try

{

Thread.sleep(200);

}

catch (Exception e)

{

}

//加锁

synchronized( mSurfaceHolder )

{

Draw();

}

}

}

// 绘图方法

public void Draw()

{

//锁定画布,得到canvas

Canvas canvas= mSurfaceHolder.lockCanvas();

if (mSurfaceHolder==null || canvas == null )

{

return;

}

if (miCount < 100)

{

miCount++;

}

else

{

miCount = 0;

}

// 绘图

Paint mPaint = new Paint();

mPaint.setAntiAlias(true);

mPaint.setColor(Color.BLACK);

//绘制矩形--清屏作用

canvas.drawRect(0, 0, 320, 480, mPaint);

switch (miCount % 4)

{

case 0:

mPaint.setColor(Color.BLUE);

break;

case 1:

mPaint.setColor(Color.GREEN);

break;

case 2:

mPaint.setColor(Color.RED);

break;

case 3:

mPaint.setColor(Color.YELLOW);

break;

default:

mPaint.setColor(Color.WHITE);

break;

}

// 绘制矩形--后面我们将详细讲解

canvas.drawCircle((320 - 25) / 2, y, 50, mPaint);

// 绘制后解锁,绘制后必须解锁才能显示

mSurfaceHolder.unlockCanvasAndPost(canvas);

}

}

SufaceView(绘图类),布布扣,bubuko.com

时间: 2024-11-07 12:18:06

SufaceView(绘图类)的相关文章

Android基础入门教程——8.3.2 绘图类实战示例

Android基础入门教程--8.3.2 绘图类实战示例 标签(空格分隔): Android基础入门教程 本节引言: 前两节我们学了Bitmap和一些基本的绘图API的属性以及常用的方法,但心里总觉得有点 不踏实,总得写点什么加深下映像是吧,嗯,本节我们就来写两个简单的例子: 1.简单画图板的实现 2.帮美女擦衣服的简单实现 嘿嘿,第二个例子是小猪刚学安卓写的一个小Demo~嘿嘿~ 开始本节内容~ 1.实战示例1:简单画图板的实现: 这个相信大家都不陌生,很多手机都会自带一个给用户涂鸦的画图板,

CanVas类(绘图类)

知识点: Canvas():创建一个空的画布,可以使用setBitmap()方法来设置具体的画布 Canvas(Bitmap bitmap):以bitmap对象创建一个画布,则将内容都绘制在Bitmap上,因此bitmap不能为Null Canvas(GL gl):在绘制3D效果时使用,与OpenGL相关 drawColor:设置背景颜色 setBitmap:设置画布 clipRect:设置显示区域,即设置裁剪部分 isOpaque:是否支持透明度 rotate:旋转画布 setViewport

C++MFC编程笔记day06 MFC向导、MFC绘图类使用

MFC绘图 MFC绘图类包括绘图设备类和绘图对象类 1 绘图设备类 CDC类-父类是CObject,封装的是一般的绘图设备,例如:显示器, 打印机等. CWindowDC类-父类是CDC类,封装的是窗口对象,包括客户区和非 客户区. CClientDC类-父类是CDC类,封装的仍然是窗口,但是只包括客户区. CPaintDC类-父类是CDC类,封装的是窗口的客户区.但是,它只用 在窗口的WM_PAINT消息处理函数中. CMetaFileDC类-父类是CDC类,作用保存绘制命令. 2 使用 创建

Android游戏之文件读写类和绘图类设计

Android游戏之文件读写类和绘图类设计 1.基础知识: A. FileInputStream http://developer.android.com/reference/java/io/FileInputStream.htmlB. FileOutputStreamhttp://developer.android.com/reference/java/io/FileOutputStream.htmlC. Environment.getExternalStorageDirectory()htt

绘图类

CDC 绘图类 ///////////////////// CClientDC 派生于CDC 构造函数调用GetDC 析构函数调用ReleaseDC 更加方便 只能访问客户区 CClientDC hdc(this);参数是 GetDesktopWindow获取桌面句柄的话 划线就相当于从桌面坐标开始可以把线画到桌面 ///////////////////////////////////////////////////////////////////// CWindowDC 派生于CDC 构造函数

Html5游戏框架createJs组件--EaselJS(二)绘图类graphics

有端友问我是否有文档,有确实有,但没有中文的,只有英文的,先提供浏览地址供大家参考学习createJs英文文档.                        EaselJS其实主要就是createJs组件中控制canvas绘图的,那么就会涉及密切相关的绘图操作,绘图操作利用Graphics类实现,我们来仔细的研究研究Graphics类. 先回顾一下EaselJS(一里面的那个圆形绘图): <!DOCTYPE HTML> <html lang="en-US">

12-2描点 学完路径可以对整个工具条做个概括 绘图类已完成

http://www.missyuan.com/viewthread.php?tid=527766 路径是矢量的.如果说图像中什么东西是矢量的,那么它就是由路径所组成的. 路径可以是与选区类似的封闭区域,也可以只是一条首尾并不相连的线段,分别称作封闭路径和开放路径.而线段可以是直线也可以是曲线,或两者兼而有之. 本身并不能直接构成图像的一部分,只有在将其作为图层蒙版或填色及画笔描边后,才可以对图像像素产生影响. 有特定的几个工具能够针对路径进行操作,它们分别是钢笔工具 ,自由钢笔工具 ,添加锚点

用仿ActionScript的语法来编写html5——第五篇,Graphics绘图

canvas本身就是一个Graphics,可以直接进行绘图在actionscript里面,每个Sprite都有一个Graphics,Shape我先不考虑了,它更容易实现些,在Html5中,绘图都是绘在同一个canvas上面的,所以我们现在需要考虑两个问题,1,如何把每个Sprite里的Graphics在不同的时刻,画在同一个地方2,因为我们现在在不停的刷新页面,所以如果我们用Graphics绘图,那么它也需要不断的刷新 那我现在依然先假设,每一个Sprite储存的Graphics,只保存一些绘图

JAVA学习绘图颜色及其笔画属性设置字体显示文字

package com.graphics; import java.awt.*; import java.awt.geom.Rectangle2D; import java.util.Date; import javax.swing.*; /** * * @author biexiansheng * */ public class DrawString extends JFrame{ private Shape rect;//矩形对象 private Font font;//字体对象 priva