package com.Aina.Android;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.view.KeyEvent;
import android.view.View;
public class GameView extends View implements Runnable {
private Paint mPaint;
private Bitmap mBitqq;
private Bitmap mBitDestTop;
private int movex = 0;
private int DisplayWidth;//屏幕宽带
private int DisplayHeight;//屏幕高度
public GameView(Context context,int DisplayWidth,int DisplayHeight) {
super(context);
this.DisplayWidth = DisplayWidth;
this.DisplayHeight = DisplayHeight;
mPaint = new Paint();
mBitqq = ((BitmapDrawable) this.getResources().getDrawable(
R.drawable.qq)).getBitmap();
mBitDestTop = ((BitmapDrawable) this.getResources().getDrawable(
R.drawable.desktop)).getBitmap();
new Thread(this).start();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.BLACK);// 清屏
canvas.drawBitmap(mBitqq, 0, 0, mPaint);
this.DrawImage(canvas, mBitDestTop, movex, mBitqq.getHeight() + 2,
mBitDestTop.getWidth(), mBitDestTop.getHeight(), 0,0);
}
@Override
public void run() {
while (!Thread.interrupted()) {
try {
Thread.sleep(100);
} catch (Exception ex) {
ex.printStackTrace();
Thread.currentThread().interrupt();
}
this.postInvalidate();
}
}
/**
* x:屏幕上的x坐标 y:屏幕上的y坐标 w:要绘制的图片的宽度 h:要绘制的图片的高度 bx:图片上的x坐标 by:图片上的y坐标
*
* @param canvas
* @param mBitmap
* @param x
* @param y
* @param w
* @param h
* @param bx
* @param by
*/
public void DrawImage(Canvas canvas, Bitmap mBitmap, int x, int y, int w,
int h, int bx, int by) {
Rect src = new Rect();// 图片裁剪区域
Rect dst = new Rect();// 屏幕裁剪区域
src.left = bx;
src.top = by;
src.right = bx + w;
src.bottom = by + h;
dst.left = x;
dst.top = y;
dst.right = x + w;
dst.bottom = y + h;
canvas.drawBitmap(mBitmap, src, dst, mPaint);
src = null;
dst = null;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
if (this.movex > 0) {
this.movex -= 5;
}
} else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
if (this.movex + this.mBitDestTop.getWidth() < this.DisplayWidth) {
this.movex += 5;
}
}
return super.onKeyDown(keyCode, event);
}
}
package com.Aina.Android;
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.KeyEvent;
public class Test_DrawBitmap extends Activity {
/** Called when the activity is first created. */
private GameView gv = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
gv = new GameView(this,dm.widthPixels,dm.heightPixels);
setContentView(gv);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return gv.onKeyDown(keyCode, event);
}
}
分享到:
相关推荐
`drawBitmap()`方法是Canvas的一个关键函数,用于在Canvas上绘制Bitmap图像。本文将深入解析`drawBitmap()`方法的参数及其用法,并通过实例来说明如何使用该方法。 `drawBitmap(Bitmap bitmap, Rect src, Rect dst,...
canvas.drawBitmap(croppedBitmap, 0, 0, null); // 添加其他图形或文字绘制... // 保存到文件或进行其他操作... ``` 在实际应用中,我们可能需要根据需求动态调整图片大小或比例,这时可以使用Bitmap....
首先,我们需要创建一个圆形Bitmap作为裁剪模板,然后使用Canvas的drawBitmap方法,结合Matrix的postRotate操作,将原Bitmap按照指定角度旋转后绘制到圆形Bitmap上。这样,超出圆形边界的图像部分会被裁剪掉,从而...
7. **绘制图案**:如果有特定的图案,可以使用`Canvas.drawBitmap()`或`Canvas.drawPath()`来绘制。 8. **保存图像**:如果你需要将印章保存为图片文件,可以使用`Bitmap.compress()`方法。 在`SealTest`项目中,...
使用`Canvas.drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)`方法,可以将Bitmap绘制到Canvas的指定位置。Bitmap可以通过资源ID、文件路径或者直接从内存中创建。 Android提供了Paint对象,它包含了...
在Canvas上绘制时,将Paint对象作为参数传递给绘制方法,如canvas.drawBitmap(Bitmap, x, y, Paint)。 Android的图形绘制是一个灵活且强大的系统,允许开发者通过组合使用Bitmap、Drawable、Canvas和Paint来创建...
Canvas提供了如`drawBitmap()`、`drawRect()`、`drawCircle()`等方法来在Bitmap上绘制图形。 2. **Paint对象**:在Canvas上绘制图形时,Paint对象扮演着重要角色。Paint包含了绘制样式(颜色、线宽、阴影效果等)和...
例如,我们可以使用`drawRect()`, `drawCircle()`, `drawLine()`等方法来绘制基本图形,以及`drawBitmap()`和`drawText()`来绘制图像和文字。 3. **Paint对象**: Paint对象负责定义绘制时的颜色、样式、字体等...
通过Canvas的drawBitmap方法,我们可以指定Matrix参数,让Canvas使用这个变换矩阵来绘制Bitmap。 总的来说,Android的Matrix类为我们提供了强大的图像变换能力,可以灵活地处理Bitmap。在进行图像处理时,理解...
在Android开发中,Drawable和Bitmap是两种常用的图像资源类型,它们各有特点且在不同场景下有不同的优势。了解和掌握它们之间的相互转换对于优化性能和提高用户体验至关重要。本篇将详细介绍如何在Android中进行...
Bitmap类提供了对bitmap的操作方法,而Canvas类提供了图像的绘制方法。 在实例中,使用了一个工具类BitmapDeleteNoUseSpaceUtil,该工具类提供了去除bitmap无用白色边框的方法。该方法首先将bitmap灰度化,然后将...
绘制Bitmap通常在Canvas上进行,可以使用`canvas.drawBitmap(Bitmap bitmap, float left, float top, Paint paint)`或`canvas.drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)`。Paint对象允许设置绘制样式...
`Canvas`提供了`drawBitmap()`方法,我们可以用它来在指定的位置绘制Bitmap。在`BitmapView`的`onDraw()`方法中,我们先绘制原始Bitmap,然后在不同的位置绘制旋转后的Bitmap,以便于对比。 4. **自定义View**: ...
绘制几何图形可以使用Canvas类提供的方法,绘制文本可以使用drawText()和drawPosText()方法,绘制路径可以使用android.graphics.Path类来实现,绘制图片可以使用Canvas类提供的drawBitmap()方法。 4. 动画技术 ...
2. Bitmap:Bitmap是Android中的像素数据容器,用于存储图像。我们可以通过BitmapFactory类解析图片资源或从内存中获取Bitmap,然后在Canvas上进行绘制。 三、Path与Matrix 1. Path:Path对象用于创建和操作复杂的...
总之,Android的Canvas提供了强大的图像绘制能力,通过灵活运用各种方法,开发者可以实现丰富的视觉效果和交互体验。在指定区域内绘制图片只是Canvas功能的冰山一角,深入了解和熟练掌握Canvas的使用,将极大地提升...
例如,使用` drawBitmap() `绘制Bitmap,` drawRect() `绘制矩形,` drawText() `绘制文字等。Paint类则可以设置线条颜色、填充样式、抗锯齿效果等。 4. **图像裁剪**:可以使用` Bitmap.createBitmap() `结合...
通过Canvas提供的drawXXX方法(如drawRect、drawCircle、drawBitmap等)结合Paint的设置,可以实现丰富的2D图形绘制。 2. Bitmap:Bitmap是Android中用于存储像素数据的对象,可以进行图像加载、显示、裁剪、旋转、...