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);	//解锁画布并画图
	}
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

菜鸟学android——paint画虚线的问题

看了网上很多答案,教

Android中绘制虚线

概述今天给大家介绍两种实现虚线的方式方式一:利用shape绘制 <stroke android:width="3px"

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

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

如何给SVG的path画线加上箭头

解决方案: 1. 先在svg中利用元素、、元素  ,定义一个小箭头                           ...

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

但我们需要在屏幕上形成画线时,Path类的应用是必不可少的,而Path类的lineTo和quadTo方法实现的绘制线路形式是不一样的;    1. Path--->quadTo(float x, f...

Canvas 的drawRect 几个参数理解

摘自博客地址:http://blog.csdn.net/show214/article/details/8922597 昨天写了一个View视图,在上面画了一个矩形,这个视图的最后效果如图: 主要代...

android activity中画任意直线

这里的画直线不是通过新建一个View类,在View的画布中画,而是直接在activity中画。 package lizm.lt; import android.app.Activity; i...

Android 用 xml View shape画线

用 xml 产生一个 分割线因为没有美工, 所以 只能 自己动手了在 layout 文件夹 里的 xml 写 方法1: 在 layout 里面的布局 xml 文件里加上面的代码 <View ...

Android 用Canvas画textview、bitmap、矩形(裁剪)、椭圆、线、点、弧

初始化对象private Paint mPaint;//画笔 private int count;//点击次数 private Rect rect;//矩形 public CounstomVie...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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