Android画图Path的使用

来源:互联网 发布:阿里云 证券公司名单 编辑:程序博客网 时间:2024/06/08 04:08
//主程序中继承自Android.view.View的 MyView类,重写 MyView的onDraw()方法,  
//一开始就会运行绘制的工作,在onDraw()中以Paint将几何图形绘制在Canvas上,  
//以 paint.setColor() 改变图形颜色、以 paint.setStyle()的设置来控制画出的的  
//图形是空心还是实心。程序的最后一段,就是直接在Canvas写上文字,随着Paint对  
//象里的属性设置,也会有不同的外观模式。

public class GraphicesActivity extends Activity {  

     

    @Override 

    public voidonCreate(Bundle savedInstanceState) {  

       super.onCreate(savedInstanceState);  

        

       MyView myView=new MyView(this);  

       setContentView(myView);  

    

       

     

    private class MyViewextends View {   

        public MyView(Contextcontext){   

          super(context) ;   

         

           

          

        @Override 

        protected void onDraw(Canvascanvas)   

        {     

            super.onDraw(canvas);  

             

            canvas.drawColor(Color.WHITE);  

               

            Paint paint=new Paint();  

             

            paint.setAntiAlias(true);  

             

            paint.setColor(Color.RED);  

             

            paint.setStyle(Paint.Style.STROKE);  

             

            paint.setStrokeWidth(3);  

               

             

            canvas.drawCircle(40, 40, 30, paint);  

             

            canvas.drawRect(10, 90, 70, 150, paint);  

             

            canvas.drawRect(10, 170, 70,200, paint);  

             

            canvas.drawOval(new RectF(10,220,70,250),paint);   

             

            Path path=new Path();  

            path.moveTo(10, 330);  

            path.lineTo(70,330);  

            path.lineTo(40,270);  

            path.close();  

            canvas.drawPath(path, paint);  

             

            Path path1=new Path();  

            path1.moveTo(10, 410);  

            path1.lineTo(70,410);  

            path1.lineTo(55,350);  

            path1.lineTo(25, 350);  

            path1.close();  

            canvas.drawPath(path1, paint);  

               

             

            paint.setColor(Color.BLUE);  

             

            paint.setStyle(Paint.Style.FILL);  

             

            canvas.drawCircle(120,40,30, paint);  

             

            canvas.drawRect(90, 90, 150, 150, paint);  

             

            canvas.drawRect(90, 170, 150,200, paint);  

             

            RectF re2=new RectF(90,220,150,250);  

            canvas.drawOval(re2, paint);  

             

            Path path2=new Path();  

            path2.moveTo(90, 330);  

            path2.lineTo(150,330);  

            path2.lineTo(120,270);  

            path2.close();  

            canvas.drawPath(path2, paint);  

             

            Path path3=new Path();  

            path3.moveTo(90, 410);  

            path3.lineTo(150,410);  

            path3.lineTo(135,350);  

            path3.lineTo(105, 350);  

            path3.close();  

            canvas.drawPath(path3, paint);  

               

             

            Shader mShader=new LinearGradient(0,0,100,100,  

                   newint[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},  

                   null,Shader.TileMode.REPEAT);  

            //Shader.TileMode三种模式  

            //REPEAT:沿着渐变方向循环重复  

            //CLAMP:如果在预先定义的范围外画的话,就重复边界的颜色  

            //MIRROR:与REPEAT一样都是循环重复,但这个会对称重复  

            paint.setShader(mShader);//用Shader中定义定义的颜色来话  

              

             

            canvas.drawCircle(200,40,30, paint);  

             

            canvas.drawRect(170, 90, 230, 150, paint);  

             

            canvas.drawRect(170, 170, 230,200, paint);  

             

            RectF re3=new RectF(170,220,230,250);  

            canvas.drawOval(re3, paint);  

             

            Path path4=new Path();  

            path4.moveTo(170,330);  

            path4.lineTo(230,330);  

            path4.lineTo(200,270);  

            path4.close();  

            canvas.drawPath(path4, paint);  

             

            Path path5=new Path();  

            path5.moveTo(170, 410);  

            path5.lineTo(230,410);  

            path5.lineTo(215,350);  

            path5.lineTo(185, 350);  

            path5.close();  

            canvas.drawPath(path5, paint);  

               

             

            paint.setTextSize(24);  

            canvas.drawText("圆形", 240, 50, paint);  

            canvas.drawText("正方形", 240, 120, paint);  

            canvas.drawText("长方形", 240, 190, paint);  

            canvas.drawText("椭圆形", 240, 250, paint);  

            canvas.drawText("三角形", 240, 320, paint);  

            canvas.drawText("梯形", 240, 390, paint);    

         

    

}  

0 0
原创粉丝点击