canvas空值

============问题描述============

MyGameView:

private Drawable myBackground;

public MyGameView(Context context) {

super(context);

// TODO Auto-generated constructor stub

myContext = context;

//mBackground获取background的图片

myBackground = myContext.getResources().getDrawable(R.drawable.background);

}

private void drawBackground(Canvas canvas){

canvas.drawColor(Color.WHITE);   canvas 是空值

//获取屏幕的高度。宽度

WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE);

@SuppressWarnings("deprecation")

int width = wm.getDefaultDisplay().getWidth();

@SuppressWarnings("deprecation")

int height = wm.getDefaultDisplay().getHeight();

myBackground.setBounds(0, 0, width, height);

myBackground.draw(canvas);

}

protected void Ondraw(Canvas canvas) {

// TODO Auto-generated method stub

super.Ondraw(canvas);

//用户画背景

drawBackground(canvas);canvas是空值

}

MysurfaceView:

private class DrawThread implements Runnable{

private boolean myRun = true;

@Override

public void run() {

// TODO Auto-generated method stub

while(myRun){

Canvas canvas = ourHolder.lockCanvas();

Ondraw(canvas);canvas是空值

ourHolder.unlockCanvasAndPost(canvas);

}

}

}

三种用红色标记的canvas都是空值,这个问题该怎么解决?

============解决方案1============

Canvas canvas = ourHolder.lockCanvas(); 这个holder是怎么获取到的? 可能是这个holder没有关联上SurfaceView

时间: 2024-12-14 18:45:54

canvas空值的相关文章

skia~canvas~bitmap

问题:怎么通过SetDIBitsToDevice(hdc, destx, desty, width, height, srcx, srcy,  startscan, scanlines, startbit, lpbmi, colorMode);canvas上的不同的绘制反应到DC上. 上次实验了new canvas(bitmap),但是这种bitmap必须是一个已经存在的bitmap且已经初始化.现在问题是,怎么去掉这个背景,直接反应上其他.也就是,bitmap内部的赋值. 通过家里一个绘画sk

《JavaScript高级程序设计》Chapter 15 canvas + Chapter 16 HTML5

Chapter 15 Canvas Chapter 16 HTML5 Chapter 15 Canvas <canvas>元素:设定区域.JS动态在这个区域中绘制图形. 苹果公司引导的.由几组API构成. 2D上下文普及了.WebGL(3D上下文)还未足够普及. 基本用法 首先:width.height属性确定绘图区域大小.后备信息放在开始和结束标签之间. getContext():DOM获得这个canvas元素对象.再在这个对象上调用getContext()获取上下文,传入参数表示获取的是2

HTML5新增Canvas标签及对应属性、API详解(基础一)

知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签原型 <canvas width=”1000” height=”1000” id=”myCanvas”> 您的浏览器版本过低,不支持HTML5新增的canvas标签. </canvas> 使用js获取该画布,并指定对象 <script> Var canvasID = doc

移动端canvas抗锯齿

未抗锯齿效果图: 加入抗锯齿代码效果: var Game = function(){ var H = document.documentElement.clientHeight || document.body.clientHeight; var W = document.documentElement.clientWidth || document.body.clientWidth; this.canvas = document.getElementById("canvas"); t

Canvas

仿百度贴吧客户端 loading 小球 前言 几天前在简书上看到在一篇文章<Android仿百度贴吧客户端Loading小球>,看了一下作者,他写了两个好玩的 demo,效果图如下: 今天趁着周末有空,用 H5 的 Canvas 仿了一下.这篇文章只实现第一个效果图.这是我实现的效果: 实现原理 实现原理是参考简书的那篇文章,这里不再复述.现在我们来一步一步实现这样的效果. 第零步:画一个圆 源码如下: <!DOCTYPE html> <html> <head&g

canvas设置width, height

在style里面设置canvas的宽高时,会发现画出的图像被拉伸了:在canvas元素中直接设置width和height就会恢复正常:如果在canvas元素里的style里设置width和height会发现又不行了!看了chy龙神 的博客发现了其中玄机.. 首先这是由canvas的构造导致的,canvas是一个画板和一张画纸组成的.当画板和画纸尺寸一致时,不会发生拉伸变形的情况:当画板和画纸尺寸不一致时,就会被拉伸变形. 能正确设置画板和画纸宽高一致的方法,这些方法可以同时设置画板和画纸的宽高:

【铜】第131篇 融合一对一canvas视频录制到备份上(二)简版做成及追加图片过程周四

关键词:一对一canvas视频录制, 简版做成,追加图片过程 一.一对一视频录制 1.1 往备份上布录制-----------------bug处理 现在不知道,网页录制都依赖哪些文件,现在需要一个一个的去除.现在去除差不多了,如下: 经过整理发现,仅仅需要两个文件,就能实现录制.如下: 简版访问地址如下: http://localhost:9001/record-canvas-drawings.html#no-back-button 二.追加图片过程 2.1 学生端追加拍照 <li><

HTML5 Canvas ( 图形的像素操作 ) getImageData, putImageData, ImgData.data

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas</title> <script type="text/javascript" src="../js/jQuery.js"></script> <style type="text/css">

HTML5 Canvas 图像动画的实现(实例小球弹跳)

Canvas 中 clearRect 清除函数 var c=document.getElementById("php100"); var p100=c.getContext("2d"); p100.clearRect(x,y,x,y) // 擦除画布一个区域x-y.x-y ------ 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <