Android之图形图像之使用Path类总结

转载 2016年01月08日 16:59:57

Path类可以预先在View上将N个点连成一条"路径",然后调用Canvas的drawPath(path,paint)即可沿着路径绘制图形

Android还为路径绘制提供了PathEffect来定义绘制效果,PathEffect包含如下子类

ComposePathEffect

CornerPathEffect

DashPathEffect

DiscretePathEffect

PathDashPathEffect

SumPathEffect

下面的示例将会逐一使用上面的绘制效果

package WangLi.Graphics.PathTest;  
  
import android.app.Activity;  
import android.content.Context;  
import android.graphics.Canvas;  
import android.graphics.Color;  
import android.graphics.ComposePathEffect;  
import android.graphics.CornerPathEffect;  
import android.graphics.DashPathEffect;  
import android.graphics.DiscretePathEffect;  
import android.graphics.Paint;  
import android.graphics.Path;  
import android.graphics.PathDashPathEffect;  
import android.graphics.PathEffect;  
import android.graphics.SumPathEffect;  
import android.os.Bundle;  
import android.view.View;  
  
public class PathTest extends Activity {  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(new MyView(this));  
    }  
    class MyView extends View  
    {  
        float phase;  
        PathEffect[] effects = new PathEffect[7];  
        int[] colors;  
        private Paint paint;  
        Path path;  
        public MyView(Context context) {  
            super(context);  
            paint = new Paint();  
            paint.setStyle(Paint.Style.STROKE);  
            paint.setStrokeWidth(4);  
            //创建,并初始化Path  
            path = new Path();  
            path.moveTo(0, 0);  
            for(int i = 1; i<= 15; i++)  
            {  
                //生成15个点,随机生成它们的坐标,并将它们连成一条Path  
                path.lineTo(i*20, (float)Math.random()*60);  
            }  
            //初始化七个颜色  
            colors = new int[] {  
                    Color.BLACK,Color.BLUE,Color.CYAN,  
                    Color.GREEN,Color.MAGENTA,Color.RED,Color.YELLOW  
            };  
        }  
        protected void onDraw(Canvas canvas)  
        {  
            //将背景填充成白色  
            canvas.drawColor(Color.WHITE);  
            //-------下面开始初始化7中路径的效果  
            //使用路径效果  
            effects[0] = null;  
            //使用CornerPathEffect路径效果  
            effects[1] = new CornerPathEffect(10);  
            //初始化DiscretePathEffect  
            effects[2] = new DiscretePathEffect(3.0f,5.0f);  
            //初始化DashPathEffect  
            effects[3] = new DashPathEffect(new float[]{20,10,5,10},phase);  
            //初始化PathDashPathEffect  
            Path p = new Path();  
            p.addRect(0, 0, 8, 8, Path.Direction.CCW);  
            effects[4] = new PathDashPathEffect(p,12,phase,PathDashPathEffect.Style.ROTATE);  
            //初始化PathDashPathEffect  
            effects[5] = new ComposePathEffect(effects[2],effects[4]);  
            effects[6] = new SumPathEffect(effects[4],effects[3]);  
            //将画布移到8,8处开始绘制  
            canvas.translate(8, 8);  
            //依次使用7中不同路径效果,7种不同的颜色来绘制路径  
            for(int i = 0; i < effects.length; i++)  
            {  
                paint.setPathEffect(effects[i]);  
                paint.setColor(colors[i]);  
                canvas.drawPath(path, paint);  
                canvas.translate(0, 60);  
            }  
            //改变phase值,形成动画效果  
            phase += 1;  
            invalidate();  
        }  
    }  
}  
效果如下



相关文章推荐

初学Android,图形图像之使用Path类(二十六)

From: http://blog.csdn.net/lee576/article/details/7865121 Path类可以预先在View上将N个点连成一条"路径",然后调用Canvas的...
  • fyfcauc
  • fyfcauc
  • 2014年11月03日 11:09
  • 385

Android自定义View之图形图像工具类Path的特殊用法

概述:没什么好说的。Demo新建一个自定义Viewpublic class MyPathView extends View { private int width; private i...

Android图形图像之Canvas,Paint与Path类

前言     最近在学习Android图形方面相关的知识,自己开发的经验很少,于是现在更多的时间用在学习上,单纯的学习,总是容易遗忘,于是希望将自己学习的东西稍加总结,写在自己的博客上面,供自己查看...

android图形图像编程-第三章 路径(Path)与剪裁(Clipping)

android中画虚线--.PathEffect类简单认识 Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); p.setStyle(Style.STROKE); ...
  • happyq
  • happyq
  • 2013年07月12日 11:14
  • 1053

【Android LibGDX游戏引擎开发教程】第05期:图形图像的绘制(上)基础类的使用和详解

由于平常工作和生活琐事的种种原因,所以这个系列的教程更新的有点慢,还请大家见谅。在这期的主题中,博 主给大家来的教学是关于图形图像的绘制,要知道一个最基本的应用程序都会有一个精美的图像,那么就更别说...

初学Android,图形图像之使用Bitmap和BitmapFactory(二十四)

Bitmap代表一张位图,BitmapDrawable里封装的图片就是一个Bitmap对象.把Bitmap对象包装成BitmapDrawable对象,可以调用Bitmapdrawable的构造器Bit...
  • lee576
  • lee576
  • 2012年08月13日 15:10
  • 32849

初学Android,图形图像之使用双缓冲画图(二十七)

当数据量很大时,绘图可能需要几秒钟甚至更长的时间,而且有时还会出现闪烁现象,为了解决这些问题,可采用双缓冲技术来绘图。 双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象...
  • lee576
  • lee576
  • 2012年08月15日 17:44
  • 12821

初学Android,图形图像之混合使用逐帧动画和补间动画(三十七)

下面例子混合使用了逐帧动画和补间动画,还有一个缺点,就是画面闪烁,一直没有找到解决办法上面点击ImageView,上面的人物就开始走路跟移动定义动画文件...
  • lee576
  • lee576
  • 2012年08月31日 15:25
  • 6902

【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用

在上一篇文章中,我们提到了图片必须是2的n次方的问题。但是随着Libgdx的不断完善和发展,使用一些工具就 可以很好的解决了这样一个问题,但是它的功能又不仅仅只限于此,那么下面就来让我们看看Text...

【Android开发】图形图像处理技术-常用绘图类之Canvas类

Canvans类代表画布,通过该类提供的方法,可以绘制各种图形(如矩形、圆形和线条等)。通常情况下,要在Android中绘图,需要先创建一个继承自View类的视图,并且在该类中重写onDraw(Can...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android之图形图像之使用Path类总结
举报原因:
原因补充:

(最多只允许输入30个字)