Android中画虚线以及用path画线时设置颜色等效果的改变

原创 2013年12月02日 21:03:06
1、Android中画虚线,可以通过DashPathEffect方法实现,它如何使用网上好多,具体实例看下面的代码。

2、Android画线的时候,如果用到path进行画线,如果想实现画不同颜色或其他效果时,要注意使用不同的Path对象,不然后面的设置会覆盖前面的,也就是说,调用canvas.drawPath(path, paint)时,会在同一个path对象的所有路径上进行paint改变后的绘制,也就相当于把前面的覆盖了。

比如在SurfaceView上画一个如图所示的效果,部分代码如下:

Canvas canvas = null;
Paint paint = null;
try {
	synchronized(mSurHolder){	//做一下同步处理
		canvas = mSurHolder.lockCanvas(null);	//锁定画布
		paint = new Paint();
		
		//画蓝色矩形区域
		paint.setARGB(255, 0, 200, 255);
		paint.setStyle(Paint.Style.FILL);
		canvas.drawRect(rect, paint);
		
		paint.setStyle(Paint.Style.STROKE);	//空心
		paint.setColor(Color.WHITE);
        paint.setStrokeWidth(1);
        
	    //设置画虚线,如果之后不再使用虚线,调用paint.setPathEffect(null);
	    PathEffect effects = new DashPathEffect(new float[]{5,5,5,5},1);  
        paint.setPathEffect(effects);  
        //横向第一条虚线
        Path path1 = new Path();
        path1.moveTo(left, (float) (top+tableHeight*1.0/3));
        path1.lineTo(right, (float) (top+tableHeight*1.0/3));
        	
        //横向第二条虚线
        path1.moveTo(left, (float) (bottom-tableHeight*1.0/3));
        path1.lineTo(right, (float) (bottom-tableHeight*1.0/3));
        	
        //纵向第一条虚线
        path1.moveTo((float) (left+tableWidth*0.4), top);
        path1.lineTo((float) (left+tableWidth*0.4), bottom);
		
		//纵向第二条虚线
		path1.moveTo((float) (right-tableWidth*0.4), top);
		path1.lineTo((float) (right-tableWidth*0.4), bottom);
		canvas.drawPath(path1, paint);	//同一个path对象,只需要一个drawPath()
		
		paint.setStrokeWidth(2);
		paint.setPathEffect(null);	//设置使之前的虚线效果无效
		//画垂直中线
        Path path2 = new Path();	//想要不同的颜色时要new一个新的path对象
		path2.moveTo(surWidth/2, top);
		path2.lineTo(surWidth/2, bottom);
        canvas.drawPath(path2, paint);
		//画水平中线
		Path path3 = new Path();
		paint.setColor(Color.BLACK);
		path3.moveTo(left, surHeight/2);
		path3.lineTo(right, surHeight/2);
        canvas.drawPath(path3, paint);
	}
} catch (Exception e) {
	// TODO 自动生成的 catch 块
	e.printStackTrace();
}finally{
	if (canvas != null) {
		mSurHolder.unlockCanvasAndPost(canvas);	//解锁画布并画图
	}
}




安卓开发之使用DashPathEffect来绘制虚线

原理:主要用到了PathEffect的子类 DashPathEffect方法:给画笔Paint对象设置绘制路径时的特效:.setPathEffect效果:DashPathEffect 构造方法的参数决...
  • cxmscb
  • cxmscb
  • 2016年06月25日 22:35
  • 4575

Android DashPathEffect的简单使用(如实线虚线)

首先看一个自定义view实现的实线效果图, 实现很简单,就是用paint与path结合使用就可以做到了,由于代码过于简单,直接贴源码 布局 ...

Android中Path类的lineTo方法和quadTo方法画线的区别

最近在工作中接触到了贝塞尔曲线绘图,在自学中刚好看到这篇优秀的文章,特意转来参考。 当我们需要在屏幕上形成画线时,Path类的应用是必不可少的,而Path类的lineTo和quadTo方法实现的...

安卓自定义View进阶-Path基本操作

在上一篇 Canvas 之图片文字中我们了解了如何使用 Canvas 中绘制图片文字,结合前几篇文章,Canvas 的基本操作已经差不多完结了,然而 Canvas 不仅仅具有这些基本的操作,还可以更加...

自定义View之绘图篇(二):路径(Path)

马上要到五一了,提前祝贺大家五一快乐。 今天的主角是路劲,这个词给我的第一印象就是那种弯弯的小路,届时让我想起了小时候的曲径通幽处, 反正我是忘记了下一句是什么。言归正传,Android中的Pat...

android 设置textview中划线效果

textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线 textView.getPaint().setAnt...
  • romicboy
  • romicboy
  • 2014年04月23日 09:42
  • 20353

android 设置textview中划线效果

转:http://blog.csdn.net/romicboy/article/details/24346767 textView.getPaint().setFlags(Paint. UNDERL...

Android中绘制虚线

概述今天给大家介绍两种实现虚线的方式方式一:利用shape绘制

android 开发:绘制复杂曲线,带渐变图表

绘制曲线类: public class BaseFundChartView extends View { Paint linePaint; Paint textPaint; P...

android View的工作原理

上次我们讲了android的滑动冲突,其中也介绍了android的事件分发机制,如果对这方面不清楚的,可以查看我的上一篇博客《android滑动冲突解决方案》,这次我们主要介绍View的工作原理,为以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中画虚线以及用path画线时设置颜色等效果的改变
举报原因:
原因补充:

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