android学习之绘图总结

以下是程序的运行结果:

代码如下:

[java]  view plain copy
  1. package com.example.njupt.zhb.canvastest;  
  2. import android.R.integer;  
  3. import android.app.Activity;      
  4. import android.os.Bundle;      
  5. import android.view.View;      
  6. import android.content.Context;      
  7. import android.graphics.Bitmap;  
  8. import android.graphics.BitmapFactory;  
  9. import android.graphics.Canvas;      
  10. import android.graphics.Color;      
  11. import android.graphics.DashPathEffect;  
  12. import android.graphics.Paint;      
  13. import android.graphics.PathEffect;  
  14. import android.graphics.RectF;      
  15. import android.graphics.Path;      
  16. import android.graphics.Shader;      
  17. import android.graphics.LinearGradient;    
  18. //主程序中继承自Android.view.View的 MyView类,重写 MyView的onDraw()方法,     
  19. //一开始就会运行绘制的工作,在onDraw()中以Paint将几何图形绘制在Canvas上,     
  20. //以 paint.setColor() 改变图形颜色、以 paint.setStyle()的设置来控制画出的的     
  21. //图形是空心还是实心。程序的最后一段,就是直接在Canvas写上文字,随着Paint对     
  22. //象里的属性设置,也会有不同的外观模式。  
  23.   
  24. public class MyDrawActivity extends Activity {      
  25.     /** Called when the activity is first created. */     
  26.     @Override     
  27.     public void onCreate(Bundle savedInstanceState) {      
  28.         super.onCreate(savedInstanceState);      
  29.         /*设置ContentView为自定义的MyVieW*/     
  30.         MyView myView=new MyView(this);      
  31.         setContentView(myView);   
  32.           
  33.     }      
  34.            
  35.     /* 自定义继承View 的MyView*/     
  36.     private class MyView extends View {      
  37.          public MyView(Context context){      
  38.             super(context) ;      
  39.          }      
  40.            
  41.          /*重写onDraw()*/     
  42.          @Override     
  43.          protected void onDraw(Canvas canvas)      
  44.          {         
  45.               super.onDraw(canvas);      
  46.               /*设置背景为白色*/     
  47.               canvas.drawColor(Color.WHITE);      
  48.                      
  49.               Paint paint=new Paint();      
  50.               /*去锯齿*/     
  51.               paint.setAntiAlias(true);      
  52.               /*设置paint的颜色*/     
  53.               paint.setColor(Color.RED);      
  54.               /*设置paint的 style 为STROKE:空心*/     
  55.               paint.setStyle(Paint.Style.STROKE);      
  56.               /*设置paint的外框宽度*/     
  57.               paint.setStrokeWidth(3);      
  58.                      
  59.               /*画一个空心圆形*/     
  60.               canvas.drawCircle(404030, paint);      
  61.               /*画一个空心正方形*/     
  62.               canvas.drawRect(109070150, paint);      
  63.               /*画一个空心长方形*/     
  64.               canvas.drawRect(1017070,200, paint);      
  65.               /*画一个空心椭圆形*/     
  66.               canvas.drawOval(new RectF(10,220,70,250), paint);      
  67.               /*画一个空心三角形*/     
  68.               Path path=new Path();      
  69.               path.moveTo(10330);      
  70.               path.lineTo(70,330);      
  71.               path.lineTo(40,270);      
  72.               path.close();      
  73.               canvas.drawPath(path, paint);      
  74.               /*画一个空心梯形*/     
  75.               Path path1=new Path();      
  76.               path1.moveTo(10410);      
  77.               path1.lineTo(70,410);      
  78.               path1.lineTo(55,350);      
  79.               path1.lineTo(25350);      
  80.               path1.close();      
  81.               canvas.drawPath(path1, paint);      
  82.                      
  83.               /*设置paint的颜色*/     
  84.               paint.setColor(Color.BLUE);      
  85.               /*设置paint 的style为 FILL:实心*/     
  86.               paint.setStyle(Paint.Style.FILL);      
  87.               /*画一个实心圆*/     
  88.               canvas.drawCircle(120,40,30, paint);      
  89.               /*画一个实心正方形*/     
  90.               canvas.drawRect(9090150150, paint);      
  91.               /*画一个实心长方形*/     
  92.               canvas.drawRect(90170150,200, paint);      
  93.               /*画一个实心椭圆*/     
  94.               RectF re2=new RectF(90,220,150,250);      
  95.               canvas.drawOval(re2, paint);      
  96.               /*画一个实心三角形*/     
  97.               Path path2=new Path();      
  98.               path2.moveTo(90330);      
  99.               path2.lineTo(150,330);      
  100.               path2.lineTo(120,270);      
  101.               path2.close();      
  102.               canvas.drawPath(path2, paint);      
  103.               /*画一个实心梯形*/     
  104.               Path path3=new Path();      
  105.               path3.moveTo(90410);      
  106.               path3.lineTo(150,410);      
  107.               path3.lineTo(135,350);      
  108.               path3.lineTo(105350);      
  109.               path3.close();      
  110.               canvas.drawPath(path3, paint);      
  111.                      
  112.               /*设置渐变色*/     
  113.               Shader mShader=new LinearGradient(0,0,100,100,      
  114.                       new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},      
  115.                       null,Shader.TileMode.REPEAT);      
  116.               //Shader.TileMode三种模式      
  117.               //REPEAT:沿着渐变方向循环重复      
  118.               //CLAMP:如果在预先定义的范围外画的话,就重复边界的颜色      
  119.               //MIRROR:与REPEAT一样都是循环重复,但这个会对称重复      
  120.               paint.setShader(mShader);//用Shader中定义定义的颜色来话      
  121.                   
  122.               /*画一个渐变色圆*/     
  123.               canvas.drawCircle(200,40,30, paint);      
  124.               /*画一个渐变色正方形*/     
  125.               canvas.drawRect(17090230150, paint);      
  126.               /*画一个渐变色长方形*/     
  127.               canvas.drawRect(170170230,200, paint);      
  128.               /*画一个渐变色椭圆*/     
  129.               RectF re3=new RectF(170,220,230,250);      
  130.               canvas.drawOval(re3, paint);      
  131.               /*画一个渐变色三角形*/     
  132.               Path path4=new Path();      
  133.               path4.moveTo(170,330);      
  134.               path4.lineTo(230,330);      
  135.               path4.lineTo(200,270);      
  136.               path4.close();      
  137.               canvas.drawPath(path4, paint);      
  138.               /*画一个渐变色梯形*/     
  139.               Path path5=new Path();      
  140.               path5.moveTo(170410);      
  141.               path5.lineTo(230,410);      
  142.               path5.lineTo(215,350);      
  143.               path5.lineTo(185350);      
  144.               path5.close();      
  145.               canvas.drawPath(path5, paint);      
  146.               /*写字*/     
  147.               paint.setTextSize(24);      
  148.               canvas.drawText("圆形"24050, paint);      
  149.               canvas.drawText("正方形"240120, paint);      
  150.               canvas.drawText("长方形"240190, paint);      
  151.               canvas.drawText("椭圆形"240250, paint);      
  152.               canvas.drawText("三角形"240320, paint);      
  153.               canvas.drawText("梯形"240390, paint);   
  154.               /*虚线和虚线圆*/  
  155.               paint.setStyle(Paint.Style.STROKE);    
  156.               paint.setColor(Color.BLUE);  
  157.               DashPathEffect effects = new DashPathEffect(new float[]{5,5,5,5},1);    
  158.               paint.setPathEffect(effects);  
  159.               canvas.drawCircle(12046050, paint);  
  160.               canvas.drawLine(0400240400, paint);  
  161.               /*画位图*/  
  162.               Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.lenna);  
  163.               RectF dst=new RectF(10,500,bitmap.getWidth()/2+10,bitmap.getHeight()/2+500);  
  164.               canvas.drawBitmap(bitmap, null, dst, paint);  
  165.          }    
  166.            
  167.     }      
  168. }    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值