Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 中級開發 >> Android畫圖Path的使用

Android畫圖Path的使用

編輯:中級開發

Java代碼

  1. package com.Javaeye.android.my;   
     
  2.    
     
  3. import android.app.Activity;   
     
  4. import android.os.Bundle;   
     
  5. import android.view.VIEw;   
     
  6. import android.content.Context;   
     
  7. import android.graphics.Canvas;   
     
  8. import android.graphics.Color;   
     
  9. import android.graphics.Paint;   
     
  10. import android.graphics.RectF;   
     
  11. import android.graphics.Path;   
     
  12. import android.graphics.Shader;   
     
  13. import android.graphics.LinearGradIEnt;   

//主程序中繼承自android.view.View的 MyView類,重寫 MyVIEw的onDraw()方法,   
//一開始就會運行繪制的工作,在onDraw()中以Paint將幾何圖形繪制在Canvas上,   
//以 paint.setColor() 改變圖形顏色、以 paint.setStyle()的設置來控制畫出的的   
//圖形是空心還是實心。程序的最後一段,就是直接在Canvas寫上文字,隨著Paint對   
//象裡的屬性設置,也會有不同的外觀模式。

  1. public class GraphicesActivity extends Activity {   
     
  2.     /** Called when the activity is first created. */  
     
  3.     @Override  
     
  4.     public void onCreate(Bundle savedInstanceState) {   
     
  5.         super.onCreate(savedInstanceState);   
     
  6.         /*設置ContentView為自定義的MyVIEW*/  
     
  7.         MyView myView=new MyVIEw(this);   
     
  8.         setContentView(myVIEw);   
     
  9.     }   
     
  10.         
     
  11.     /* 自定義繼承View 的MyVIEw*/  
     
  12.     private class MyView extends VIEw {   
     
  13.          public MyVIEw(Context context){   
     
  14.             super(context) ;   
     
  15.          }   
     
  16.              
     
  17.          /*重寫onDraw()*/  
     
  18.          @Override  
     
  19.          protected void onDraw(Canvas canvas)   
     
  20.          {      
     
  21.               super.onDraw(canvas);   
     
  22.               /*設置背景為白色*/  
     
  23.               canvas.drawColor(Color.WHITE);   
     
  24.                   
     
  25.               Paint paint=new Paint();   
     
  26.               /*去鋸齒*/  
     
  27.               paint.setAntiAlias(true);   
     
  28.               /*設置paint的顏色*/  
     
  29.               paint.setColor(Color.RED);   
     
  30.               /*設置paint的 style 為STROKE:空心*/  
     
  31.               paint.setStyle(Paint.Style.STROKE);   
     
  32.               /*設置paint的外框寬度*/  
     
  33.               paint.setStrokeWidth(3);   
     
  34.                   
     
  35.               /*畫一個空心圓形*/  
     
  36.               canvas.drawCircle(40, 40, 30, paint);   
     
  37.               /*畫一個空心正方形*/  
     
  38.               canvas.drawRect(10, 90, 70, 150, paint);   
     
  39.               /*畫一個空心長方形*/  
     
  40.               canvas.drawRect(10, 170, 70,200, paint);   
     
  41.               /*畫一個空心橢圓形*/  
     
  42.               canvas.drawOval(new RectF(10,220,70,250), paint);   
     
  43.               /*畫一個空心三角形*/  
     
  44.               Path path=new Path();   
     
  45.               path.moveTo(10, 330);   
     
  46.               path.lineTo(70,330);   
     
  47.               path.lineTo(40,270);   
     
  48.               path.close();   
     
  49.               canvas.drawPath(path, paint);   
     
  50.               /*畫一個空心梯形*/  
     
  51.               Path path1=new Path();   
     
  52.               path1.moveTo(10, 410);   
     
  53.               path1.lineTo(70,410);   
     
  54.               path1.lineTo(55,350);   
     
  55.               path1.lineTo(25, 350);   
     
  56.               path1.close();   
     
  57.               canvas.drawPath(path1, paint);   
     
  58.                   
     
  59.               /*設置paint的顏色*/  
     
  60.               paint.setColor(Color.BLUE);   
     
  61.               /*設置paint 的style為 FILL:實心*/  
     
  62.               paint.setStyle(Paint.Style.FILL);   
     
  63.               /*畫一個實心圓*/  
     
  64.               canvas.drawCircle(120,40,30, paint);   
     
  65.               /*畫一個實心正方形*/  
     
  66.               canvas.drawRect(90, 90, 150, 150, paint);   
     
  67.               /*畫一個實心長方形*/  
     
  68.               canvas.drawRect(90, 170, 150,200, paint);   
     
  69.               /*畫一個實心橢圓*/  
     
  70.               RectF re2=new RectF(90,220,150,250);   
     
  71.               canvas.drawOval(re2, paint);   
     
  72.               /*畫一個實心三角形*/  
     
  73.               Path path2=new Path();   
     
  74.               path2.moveTo(90, 330);   
     
  75.               path2.lineTo(150,330);   
     
  76.               path2.lineTo(120,270);   
     
  77.               path2.close();   
     
  78.               canvas.drawPath(path2, paint);   
     
  79.               /*畫一個實心梯形*/  
     
  80.               Path path3=new Path();   
     
  81.               path3.moveTo(90, 410);   
     
  82.               path3.lineTo(150,410);   
     
  83.               path3.lineTo(135,350);   
     
  84.               path3.lineTo(105, 350);   
     
  85.               path3.close();   
     
  86.               canvas.drawPath(path3, paint);   
     
  87.                   
     
  88.               /*設置漸變色*/  
     
  89.               Shader mShader=new LinearGradIEnt(0,0,100,100,   
     
  90.                       new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},   
     
  91.                       null,Shader.TileMode.REPEAT);   
     
  92.               //Shader.TileMode三種模式   
     
  93.               //REPEAT:沿著漸變方向循環重復   
     
  94.               //CLAMP:如果在預先定義的范圍外畫的話,就重復邊界的顏色   
     
  95.               //MIRROR:與REPEAT一樣都是循環重復,但這個會對稱重復   
     
  96.               paint.setShader(mShader);//用Shader中定義定義的顏色來話   
     
  97.                 
     
  98.               /*畫一個漸變色圓*/  
     
  99.               canvas.drawCircle(200,40,30, paint);   
     
  100.               /*畫一個漸變色正方形*/  
     
  101.               canvas.drawRect(170, 90, 230, 150, paint);   
     
  102.               /*畫一個漸變色長方形*/  
     
  103.               canvas.drawRect(170, 170, 230,200, paint);   
     
  104.               /*畫一個漸變色橢圓*/  
     
  105.               RectF re3=new RectF(170,220,230,250);   
     
  106.               canvas.drawOval(re3, paint);   
     
  107.               /*畫一個漸變色三角形*/  
     
  108.               Path path4=new Path();   
     
  109.               path4.moveTo(170,330);   
     
  110.               path4.lineTo(230,330);   
     
  111.               path4.lineTo(200,270);   
     
  112.               path4.close();   
     
  113.               canvas.drawPath(path4, paint);   
     
  114.               /*畫一個漸變色梯形*/  
     
  115.               Path path5=new Path();   
     
  116.               path5.moveTo(170, 410);   
     
  117.               path5.lineTo(230,410);   
     
  118.               path5.lineTo(215,350);   
     
  119.               path5.lineTo(185, 350);   
     
  120.               path5.close();   
     
  121.               canvas.drawPath(path5, paint);   
     
  122.                   
     
  123.               /*寫字*/  
     
  124.               paint.setTextSize(24);   
     
  125.               canvas.drawText("圓形", 240, 50, paint);   
     
  126.               canvas.drawText("正方形", 240, 120, paint);   
     
  127.               canvas.drawText("長方形", 240, 190, paint);   
     
  128.               canvas.drawText("橢圓形", 240, 250, paint);   
     
  129.               canvas.drawText("三角形", 240, 320, paint);   
     
  130.               canvas.drawText("梯形", 240, 390, paint);     
     
  131.          }   
     
  132.     }   
     
  133. }  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved