`
king_tt
  • 浏览: 2232248 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android 常用的画图方法

阅读更多
package com.sonzer.CanvasDemo;


import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.Bitmap.Config;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Matrix;

import android.graphics.Paint;

import android.graphics.Rect;

import android.graphics.RectF;

import android.graphics.drawable.BitmapDrawable;

import android.view.View;

import android.view.animation.AlphaAnimation;

import android.view.animation.Animation;

import android.view.animation.RotateAnimation;

import android.view.animation.ScaleAnimation;

import android.view.animation.TranslateAnimation;

/**

 * 绘图常用方法演示

 * @author sonzer

 *

 */

public class CanvasView extends View {

private Paint mPaint1 = null;

private Bitmap mBitmap = null;


public CanvasView(Context context) {

super(context);

// 初始化画笔

mPaint1 = new Paint();

mPaint1.setColor(Color.RED);// 设置笔刷颜色

mPaint1.setStrokeWidth(2);// 设置笔刷粗细

mPaint1.setAntiAlias(true);// 设置抗锯齿

//初始化图片

mBitmap = ((BitmapDrawable) getResources().getDrawable(

R.drawable.sonzer_pic)).getBitmap();


mBitmap = rotate(mBitmap, 10, 0, 0);// 图像旋转

mBitmap = scale(mBitmap, 0.3f, 0.3f, 0, 0);// 图像缩放

mBitmap = dispose(mBitmap, mBitmap.getWidth(), mBitmap.getHeight());// 灰度处理

// 抗锯齿(感觉不明显)

// canvas.setDrawFilter(new PaintFlagsDrawFilter(0,

// Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));


alphaAnimation();//透明度渐变动画

//translateAnimation();//平移动画

//scaleAnimation();//缩放动画

//rotateAnimation();//旋转动画

}


@Override

protected void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

super.onDraw(canvas);

canvas.drawColor(Color.WHITE);// 设置画布背景颜色

canvas.clipRect(0, 0, 320, 480);// 设置画布范围


canvas.drawLine(20, 20, 100, 30, mPaint1);// 绘制线段

canvas.drawPoint(60, 50, mPaint1);// 绘制点

canvas.drawRect(new Rect(20, 70, 120, 100), mPaint1); // 绘制矩形

canvas.drawRoundRect(new RectF(140, 70, 230, 100), 10, 10, mPaint1); // 绘制圆角矩形

canvas.drawCircle(50, 140, 30, mPaint1);// 绘制圆形

canvas.drawArc(new RectF(140, 110, 230, 170), 180, 90, true, mPaint1);// 绘制圆弧

canvas.drawOval(new RectF(240, 110, 280, 170), mPaint1);// 绘制椭圆形

canvas.drawText("绘制文字", 20, 200, mPaint1);// 绘制文字

float[] points = new float[] { 35, 220, 20, 250, 20, 250, 50, 250, 35,

220, 50, 250 };

canvas.drawLines(points, mPaint1);// 绘制线段序列,相当3条线,6个坐标



canvas.drawBitmap(mBitmap, 20, 270, null);// 绘制图片


}


/**

* 图像旋转

* 

* @param mBitmap

* @param angle

* @param px

* @param py

* @return

*/

public Bitmap rotate(Bitmap mBitmap, float angle, float px, float py) {

Matrix matrix = new Matrix();

matrix.reset();

matrix.setRotate(angle, px, py);

mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(),

mBitmap.getHeight(), matrix, true);

return mBitmap;

}


/**

* 图像缩放

* 

* @param sx

* @param sy

* @param px

* @param py

* @return

*/

public Bitmap scale(Bitmap mBitmap, float sx, float sy, float px, float py) {

Matrix matrix = new Matrix();

matrix.reset();

matrix.setScale(sx, sy, px, py);

mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(),

mBitmap.getHeight(), matrix, true);

return mBitmap;

}


/**

* 灰度处理

* 

* @param mBitmap

* @param width

* @param height

* @return

*/

public Bitmap dispose(Bitmap mBitmap, final int width, final int height) {

int bitmap[] = new int[width * height];

mBitmap.getPixels(bitmap, 0, width, 0, 0, width, height);

for (int i = 0; i > 16) & 0xff;

int g = (bitmap[index] >> 8) & 0xff;

int b = (bitmap[index]) & 0xff;

// 计算灰度值

double gray = r * 0.3 + g * 0.59 + b * 0.11;

// 0xff000000 | (R 
<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
分享到:
评论

相关推荐

    Android 常用画图方法练习

    这篇博客"Android 常用画图方法练习"可能涵盖了如何在Android平台上利用Canvas、Paint等工具进行图形绘制的技术要点。以下是对这些知识点的详细说明: 1. **Canvas与Paint** - **Canvas** 是Android中用于在Bitmap...

    android 画图小例子

    以上是Android图形绘制的基本概念和常用方法。通过这些工具,开发者可以创造出丰富多样的视觉效果,为用户带来更加生动和有趣的体验。在实际项目中,还需要结合具体的业务需求和性能优化技巧,才能实现高质量的图形...

    Android绘图常用方法汇总

    本篇文章将深入探讨Android绘图的一些常用方法,帮助开发者更好地理解和掌握Android图形绘制的核心技术。 首先,我们来看画笔(Paint)的使用。`Paint`对象是Android绘图系统中的关键组件,用于定义线条样式、颜色...

    android 画图软件(3d)

    在Android平台上,开发一款画图软件,特别是支持3D效果的柱状图,可以极大地提升用户体验,让数据可视化更加生动。本文将详细讲解如何利用Android技术实现3D柱状图的绘制,以及与开源框架AChartEngine的比较。 首先...

    android canvas 画图

    本篇文章将深入探讨如何使用Android Canvas进行图形绘制,包括基本概念、常用方法以及实际应用示例。 Canvas提供了丰富的绘图API,使得开发者可以在Bitmap或者View上绘制各种形状,如线条、圆形、矩形、弧线等。...

    android自定义控件绘图

    本篇文章将深入探讨Android自定义控件绘图的核心概念、步骤以及常用技术。 一、自定义控件基础 1. 继承基础:自定义控件通常从View或ViewGroup类派生,前者用于绘制单一图形,后者用于管理子视图的布局。 2. ...

    Android画图学习

    本节主要介绍了Android中获取资源的基本方法以及如何获取画图对象。了解这些基础内容对于后续的学习至关重要。接下来将分别详细介绍各个知识点。 ### 二、Bitmap `Bitmap`是Android中用来表示图像的核心类之一。它...

    Android中Canvas的常用方法总结

    以下是对Android Canvas常用方法的详细说明: 1. **Canvas操作** - **平移(Translation)**:通过`translate(float dx, float dy)`方法,可以将Canvas的绘图坐标系沿着X轴和Y轴平移。例如,`canvas.translate(100, ...

    android 项目源码下载:17套摄影图像类项目

    Android 常用图片特效处理源码.rar Android 水果相册浏览器源码.rar Android 炫酷相册源码.rar Android 画图工具源码.rar Android 画图程序源码.rar ImageView控件缩放和旋转图片源码.rar PC机摄像头摄像数据在...

    Android draw自动绘画功能.zip

    - Path对象用于存储连续的线和曲线,是自定义绘画中常用的工具。在ACTION_MOVE事件中,我们可以通过`Path.moveTo()`和`Path.lineTo()`方法将移动轨迹添加到Path中,然后在onDraw()方法里使用Canvas的`drawPath()`...

    Android Canvas方法总结最全面详解API(小结)

    drawXxx方法族:以一定的坐标值在当前画图区域画图,另外图层会叠加, 即后面绘画的图层会覆盖前面绘画的图层。 clipXXX方法族:在当前的画图区域裁剪(clip)出一个新的画图区域,这个 画图区域就是canvas对象的...

    java画图板源码-awesome-androidstudio-plugins:收集Androidstudio常用的插件

    java画图板 源码 收集Android studio 常用的插件 【目录】 【详情】 Exynap Effortless Android Development [官网地址]() android-butterknife-zeleznyandroid-butterknife-zelezny 是根据butterknife定制的一款...

    Android编程画图之抗锯齿解决方法

    本文将详细探讨两种在Android中实现抗锯齿的方法,并通过实例代码进行讲解。 方法一:使用`Paint`对象的`setAntiAlias(true)`方法 当我们在Android中使用`Canvas`进行图形绘制时,可以为`Paint`对象设置抗锯齿标志...

    Android Canvas绘图Demo

    本篇将深入探讨`Android Canvas绘图`的相关知识点,包括基本概念、常用方法以及实际应用。 一、Canvas基础 1. `Canvas`对象:在Android中,`Canvas`是绘画的基础,它就像一块画布,我们可以在上面绘制各种元素。...

    android实现简单的手写笔迹效果

    在Android平台上,实现手写笔迹效果是一项常见的需求,尤其在教育、绘画或者签名应用中。这个"drawDemo"项目可能包含了一个简单的示例,教你如何在Android应用中创建一个可交互的手写画板。下面将详细介绍实现这一...

    基于android的益智游戏的设计与实现本科论文.doc

    在基于 Android 的益智游戏中,游戏开发技术包括 Android 平台的四大组件、自定义 View 中画图的一些方法和技巧、调用 Android 系统画图的 API 及自己实现的相应算法等方面。 Android 平台的四大组件是指 Activity...

    Android画图学习总结(二)-转_玉树临疯

    根据提供的文件信息,本文将对Android绘画技术进行深入解析,主要围绕如何获取位图、提取位图信息、显示位图以及位图的操作等几个方面展开。 ### 一、获取位图资源 在Android开发中,获取位图资源是绘制图像的基础...

    android各种动画套用

    在画图应用中,帧动画可能不常用,但可以用于创建如涂鸦笔触的连续效果。 属性动画是自Android 3.0(API级别11)引入的更强大的动画系统。它允许开发者对对象的任意属性进行动画操作,并且这些变化会真正影响到对象...

    深入理解Android:卷I--详细书签版

     对于Android应用开发工程师而言,本书中关于Binder,以及sp、wp、Handler和Looper等常用类的分析或许能帮助你迅速适应Android平台上的开发工作。  (2)Android系统开发工程师  Android系统开发工程师常常需要...

Global site tag (gtag.js) - Google Analytics