android 中的 canvas , paint

在android中 有时候经常也会需要我们使用到 canvas 和 paint,(跟这经常结合起来 息息相关的就是 androd中的渲染器啦,这个前面稍微总结过了,这些东西虽然简单。但是真心感觉好实用),

上效果图,代码

android 中的 canvas , paint_第1张图片


注释也都很详细了呢。各种组合,可以达到很好的效果,例子后面举出吧。 

private class MyTestView extends View{

		public MyTestView(Context context) {
			super(context);
			// TODO Auto-generated constructor stub
		}
		
		
		@Override
		protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
			// TODO Auto-generated method stub
			int height = View.MeasureSpec.getSize(heightMeasureSpec); 
			int width = View.MeasureSpec.getSize(widthMeasureSpec); 
			setMeasuredDimension(width,height); 
		
			super.onMeasure(widthMeasureSpec, heightMeasureSpec);
		}
		
		@Override
		protected void onDraw(Canvas canvas) {
			// TODO Auto-generated method stub
			super.onDraw(canvas);
			
			
			// 创建画笔  
	        Paint p = new Paint();  
	        // 设置红色  
	        p.setColor(Color.BLUE);
	        //text的显示位置
	        p.setTextAlign(Paint.Align.LEFT); 
	        //设置字体样式  
	        p.setTypeface(Typeface.SANS_SERIF);
	        //相当于setcolor 和 setAlpha
	        //p.setARGB(0.5f, r, g, b);
	        //X轴的比例因子   大于1时横向拉伸,小于1时横向收缩
	        p.setTextScaleX(2f);
	        //设置下划线
	        p.setUnderlineText(true);
            //设置字体画笔 宽度
	        p.setStrokeWidth(20f);
	        //设置字体大小
	        p.setTextSize(50);
	        //设置倾斜因子
	        p.setTextSkewX(2);
	        //画字
	        canvas.drawText("circle", 111, 111, p); // 画文本  
	        //设置驱除画笔的锯齿效果
	        p.setAntiAlias(true);               

	        
	        
	        //画图
	        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
	        canvas.drawBitmap(bitmap,100,200,p);
	        
	        //画线
	        p.setColor(Color.GRAY);
	        canvas.drawLine(150, 180, 230, 300, p);
//	        canvas.drawLines(pts, paint);
	        
	        //  圆心 (x y)             半径 
	        canvas.drawCircle(200, 200, 20, p);    
	        
	        //画弧线
	        p.setStyle(Style.STROKE);
	        p.setColor(Color.GREEN);
	        RectF oval = new RectF(300,300,400,500);  //区域。。
	        canvas.drawArc(oval, 180, 180, false, p);
	     
	        //画矩形
	        p.setStyle(Style.FILL_AND_STROKE);
	        p.setColor(Color.CYAN);
	        RectF oval1 = new RectF(300,300,400,500);
	        canvas.drawRect(oval1,p);   
	        
	        //画扇形                        
	        p.setColor(Color.YELLOW);
	        //设置笔
	        p.setStyle(Style.STROKE);
	        RectF oval2 = new RectF(100,400,400,550);
	        //true画扇形
	        //(框)
	        canvas.drawArc(oval2, 180, 180, true, p);
	        //(实心)
	        p.setStyle(Style.FILL);
	        RectF oval3 = new RectF(100,480,370,620);
	        canvas.drawArc(oval3, 180, 180, true, p);
	        
	       
	        //多边形     实心就填充了
	        p.setStyle(Style.FILL);
	        p.setColor(Color.BLACK);
	        Path path = new Path();       //路径。。
	        path.moveTo(450,500);
	        path.lineTo(510, 510);
	        path.lineTo(550, 400);
	        //使上面的点形成封闭图形
	        path.close();  
	        canvas.drawPath(path, p);
	        
			
	        //画点  
	        p.setColor(Color.LTGRAY);
	        p.setStyle(Paint.Style.FILL); 
	        //画一个点  
	        canvas.drawPoint(80, 570 , p);
	        //画多个点
	        canvas.drawPoints(new float[]{110,570,140,570,170,570}, p);  
	          
		}
		
	 }




你可能感兴趣的:(android,canvas,paint)