歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android畫圖Path類的使用

Android畫圖Path類的使用

日期:2017/3/1 10:48:29   编辑:Linux編程

Android畫圖Path類的使用:

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