BitMap画图
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画图的更多相关文章
- Andriod中绘(画)图----Canvas的使用具体解释
转载请注明出处:http://blog.csdn.net/qinjuning 因为在网络上找到关于Canvas的使用都比較抽象,或许是我的逻辑思维不太好吧,总是感觉理解起来比較困难, 尤其是对 ...
- Android开发之画图的实现
Android开发之画图的实现 四天前上完安卓的第一节课,真的是一脸懵逼,尽管熊哥说和java是差不多的,然而这个包和那个包之间的那些转换都是些什么鬼呀!!!但是四天的学习和操作下来,我觉得安卓 ...
- Android中Bitmap,byte[],Drawable相互转化
一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...
- 【Android】[转] Android中Bitmap,byte[],Drawable相互转化
一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...
- Graphics 导出图片使用【这个主要是画图类图的使用,记录一下】
/// <summary> /// 导出信令流程矢量图 /// </summary> /// <param name="signalFlowInfos" ...
- Android中Bitmap和Drawable
一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...
- c#代码画图
说明:此示例代码在我做的一个项目中 不过还是可以学习一下 一:直角坐标系显示数据 先看效果图:
- 用Drawing画图如何不会消失
方法一:将事件放在form_Load中,在窗体中画图 1: protected void MainForm_Load(object sender,EventArgs e) 2: { 3: Init ...
- Android中Bitmap和Drawable,等相关内容
一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable) ...
随机推荐
- SQLServer-----使用jTDS连接SQLServer数据库
一.jTDS一个简短的引论 jTDS100%纯Java实现的JDBC3.0驱动,它用于连接 Microsoft SQL Server(6.5.7.2000,2005,2008 和 2012)和Syba ...
- ASP.NET MVC:Razor 引入命名空间
原文:ASP.NET MVC:Razor 引入命名空间 页面中引用 c# @using MvcApplication83.Models @using MvcApplication83.Common 行 ...
- Dynamics CRM2013/2015 禁止欢迎屏幕(Disable the Welcome Screen)
首先打开Dynamic CRM 2013将有一个欢迎界面的例子,下面的图,它不会为了图检查框出现.OK然后,下一次打开就没有. 可是当我们打开F12开发者工具,清除域的缓存后再次打开CRM,这个欢迎 ...
- kubernetes多节点部署的决心
注:以下操作均基于centos7系统. 安装ansible ansilbe能够通过yum或者pip安装,因为kubernetes-ansible用到了密码.故而还须要安装sshpass: pip in ...
- Appium键盘操作
方法1 AppiumDriver实现了在上述功能,代码如下(java版本) driver.sendKeyEvent(66);方法2 HashMap<String, Integer> key ...
- CSharp设计模式读书笔记(15):命令模式(学习难度:★★★☆☆,使用频率:★★★★☆)
命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及支持可撤销的操作.命令模式是一种对象行为型模式,其别名为 ...
- Unity3D专访——真正的面试
本来想写一系列的,一半的攻击,现在面试的水.人之奸,用大哥的话说,要走新手是做螺丝钉和抹布用的.还有一半是对出出学校的或者是自废武功转3d的朋友们提供一个比較有价值的參考. 只是我时间实在仓促.没有保 ...
- 传智播客.Net培训就业班入学测试题
2.对学员的结业考试成绩评测,要求在控制台中提示用户输入学员考试成绩,写一个方法,根据用户输入的成绩,返回一个等级:90分以上A级.80~90分B级.70~80分C级.60~70分B级.60分以下C级 ...
- Docker 管理工具 Shipyard
Docker 管理工具 Shipyard Shipyard 是一个基于 Web 的 Docker 管理工具,支持多 host,可以把多个 Docker host 上的 containers 统一管理: ...
- JAVA 长整型转换为IP地址的方法
JAVA 长整型转换为IP地址的方法 代码例如以下: /** * 整型解析为IP地址 * @param num * @return */ public static String int2iP(Lon ...