package com.example.examples_05_07;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Rect;

import android.graphics.drawable.BitmapDrawable;

import android.view.View;

public class GameView extends View implements Runnable {

Bitmap mBitQQ;//声明一个位图

Bitmap mBitDestTop;//声明一个位图

int miDTX=0;

public GameView(Context context) {

super(context);

// TODO Auto-generated constructor stub

miDTX=0;

/*从资源文件转载图片*/

//getResources()->得到Resources

//getDrawable()->得到资源中的Drawable对象,参数为资源索引ID

//getBitmap()->得到Bitmap

//得到位图,将得到的图片存储在位图中

mBitQQ=((BitmapDrawable)getResources().getDrawable(R.drawable.qq)).getBitmap();

mBitDestTop=((BitmapDrawable)getResources().getDrawable(R.drawable.desktop)).getBitmap();

//开启线程

new Thread(this).start();

}

public void onDraw(Canvas canvas) {

super.onDraw(canvas);

//清屏效果

canvas.drawColor(Color.BLACK);

//在屏幕0,0处绘制该图像

GameView.drawImage(canvas, mBitQQ, 0, 0);

/*在指定位置区域进行裁剪*/

//getWidth()->得到图片的宽度

//getHeight()->得到图片的高度

GameView.drawImage(canvas, mBitDestTop, miDTX, mBitQQ.getHeight(), mBitDestTop.getWidth(), mBitDestTop.getHeight()/2,

0, 0);

}

public void run() {

// TODO Auto-generated method stub

while (!Thread.currentThread().isInterrupted()) {

try {

Thread.sleep(100);

} catch (Exception e) {

// TODO: handle exception

Thread.currentThread().interrupt();

}

postInvalidate();

}

}

/**--------------------------------------

* 绘制图片

* @param x:屏幕x坐标

* @param y:屏幕y坐标

* @param w:要绘制图片的宽度

* @param h:要绘制图片的高度

* @param bx:图片上的x坐标

* @param by:图片上的y坐标

* */

public static void drawImage(Canvas canvas,Bitmap bitmap,int x,int y,int w,int h,int bx,int by) {

Rect src=new  Rect();//图片裁剪区域

Rect dest=new Rect();//屏幕裁剪区域

//设置图片裁剪区域

src.left=bx;

src.top=by;

src.right=bx+w;

src.bottom=by+h;

//设置屏幕裁剪区域

dest.left=x;

dest.top=y;

dest.right=x+w;

dest.bottom=y+h;

//绘制图片

canvas.drawBitmap(bitmap, src, dest, null);

src=null;

dest=null;

}

/**

* 绘制一个Bitmap

* @param bitmap:要绘制的图片

* @param x:屏幕上的x坐标

* @param y:屏幕上的y坐标

* */

public static void drawImage(Canvas canvas,Bitmap bitmap,int x,int y) {

canvas.drawBitmap(bitmap, x, y, null);

}

}

package com.example.examples_05_07;

import android.os.Bundle;

import android.R.integer;

import android.app.Activity;

import android.view.KeyEvent;

import android.view.Menu;

import android.view.MotionEvent;

public class MainActivity extends Activity {

GameView mgameView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mgameView=new GameView(this);

setContentView(mgameView);

}

public boolean onKeyDown(int keyCode,KeyEvent event) {

if(keyCode==KeyEvent.KEYCODE_DPAD_LEFT)

{

if(mgameView.miDTX>0)

{

mgameView.miDTX--;

}

}

else if (keyCode==KeyEvent.KEYCODE_DPAD_RIGHT) {

if(mgameView.miDTX+mgameView.mBitDestTop.getWidth()<320)

{

mgameView.miDTX+=10;

}

}

return true;

}

//触笔事件

public boolean onTouchEvent(MotionEvent event) {

return true;

}

}

BitMap画图的更多相关文章

  1. Andriod中绘(画)图----Canvas的使用具体解释

    转载请注明出处:http://blog.csdn.net/qinjuning     因为在网络上找到关于Canvas的使用都比較抽象,或许是我的逻辑思维不太好吧,总是感觉理解起来比較困难, 尤其是对 ...

  2. Android开发之画图的实现

    Android开发之画图的实现    四天前上完安卓的第一节课,真的是一脸懵逼,尽管熊哥说和java是差不多的,然而这个包和那个包之间的那些转换都是些什么鬼呀!!!但是四天的学习和操作下来,我觉得安卓 ...

  3. Android中Bitmap,byte[],Drawable相互转化

    一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...

  4. 【Android】[转] Android中Bitmap,byte[],Drawable相互转化

    一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...

  5. Graphics 导出图片使用【这个主要是画图类图的使用,记录一下】

    /// <summary> /// 导出信令流程矢量图 /// </summary> /// <param name="signalFlowInfos" ...

  6. Android中Bitmap和Drawable

    一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...

  7. c#代码画图

    说明:此示例代码在我做的一个项目中  不过还是可以学习一下 一:直角坐标系显示数据 先看效果图:

  8. 用Drawing画图如何不会消失

    方法一:将事件放在form_Load中,在窗体中画图   1: protected void MainForm_Load(object sender,EventArgs e) 2: { 3: Init ...

  9. Android中Bitmap和Drawable,等相关内容

    一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...

随机推荐

  1. JavaEE(8) - 本地和远程调用的有状态以及无状态Session EJB

    1. 使用NetBeans开发Session Bean #1. 创建项目:File-->New Project-->Java EE-->EJB Module #2. 在项目中创建Se ...

  2. uva 1534 - Taekwondo(dp+馋)

    题目连接:uva 1534 - Taekwondo 题目大意:有两组什么东西,题目背景有点忘记了,就是给出两组数,两组个数分别为n,m,要求找出min(n,m)对数.每一个数最多最多选一次,使得这mi ...

  3. 持续集成并不能消除 Bug,而是让它们非常容易发现和改正(转)

    互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI). 本文简要介绍持续集成的概念和做法. 一.概念 持续集成指的是 ...

  4. Sonar相关汇总

    http://www.sonarqube.org/downloads/ http://docs.sonarqube.org/display/SONAR/Documentation/ 公司前段时间推动项 ...

  5. Ubuntu通过使用PyCharm 进行调试 Odoo 8.0 可能出现的问题

    实现步骤,请移步http://shine-it.net/index.php?topic=16603.0 要么 http://www.mindissoftware.com/2014/09/11/Run- ...

  6. iOS设备per app vpn,什么是什么系统的要求,必须?

    坑爹Apple网站信息MDM厂商资料,最有发言权iOS 7.x设备支持per app vpn该,但它没有说明是什么系统要求环保要求. 1. iOS 7.x 设备.当然 2. iOS 7.x 需要设备M ...

  7. c# Buffer.BlockCopy 合并 byte 数组

    今天遇到点问题需要合并 多个  byte[] 参见 :  http://q.cnblogs.com/q/30534/ 今天复习了 所有数组的基类是 Array

  8. C语言学习之路,第一篇章。

    看的书是 C  primer plus  ,这本书好评很多, 学过C#,没有精通,了解Java,所以看这本书会很容易上手,编译器用的是VC++6.0,因为VS2010好像不支持C99标准,有些代码功能 ...

  9. std::move()

    #include <iostream> #include <utility> #include <vector> #include <string> i ...

  10. vector查找元素

    转自:http://hi.baidu.com/chain2008/blog/item/821744585e12c5c89c8204e8.html 今天又忘了怎么在vector中查找某一个值..唉..每 ...