Android画图Path的使用

Java代码

  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;

//主程序中继承自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. /* 自定义继承View 的MyView*/
  11. private class MyView extends View {
  12. public MyView(Context context){
  13. super(context) ;
  14. }
  15. /*重写onDraw()*/
  16. @Override
  17. protected void onDraw(Canvas canvas)
  18. {
  19. super.onDraw(canvas);
  20. /*设置背景为白色*/
  21. canvas.drawColor(Color.WHITE);
  22. Paint paint=new Paint();
  23. /*去锯齿*/
  24. paint.setAntiAlias(true);
  25. /*设置paint的颜色*/
  26. paint.setColor(Color.RED);
  27. /*设置paint的 style 为STROKE:空心*/
  28. paint.setStyle(Paint.Style.STROKE);
  29. /*设置paint的外框宽度*/
  30. paint.setStrokeWidth(3);
  31. /*画一个空心圆形*/
  32. canvas.drawCircle(40, 40, 30, paint);
  33. /*画一个空心正方形*/
  34. canvas.drawRect(10, 90, 70, 150, paint);
  35. /*画一个空心长方形*/
  36. canvas.drawRect(10, 170, 70,200, paint);
  37. /*画一个空心椭圆形*/
  38. canvas.drawOval(new RectF(10,220,70,250), paint);
  39. /*画一个空心三角形*/
  40. Path path=new Path();
  41. path.moveTo(10, 330);
  42. path.lineTo(70,330);
  43. path.lineTo(40,270);
  44. path.close();
  45. canvas.drawPath(path, paint);
  46. /*画一个空心梯形*/
  47. Path path1=new Path();
  48. path1.moveTo(10, 410);
  49. path1.lineTo(70,410);
  50. path1.lineTo(55,350);
  51. path1.lineTo(25, 350);
  52. path1.close();
  53. canvas.drawPath(path1, paint);
  54. /*设置paint的颜色*/
  55. paint.setColor(Color.BLUE);
  56. /*设置paint 的style为 FILL:实心*/
  57. paint.setStyle(Paint.Style.FILL);
  58. /*画一个实心圆*/
  59. canvas.drawCircle(120,40,30, paint);
  60. /*画一个实心正方形*/
  61. canvas.drawRect(90, 90, 150, 150, paint);
  62. /*画一个实心长方形*/
  63. canvas.drawRect(90, 170, 150,200, paint);
  64. /*画一个实心椭圆*/
  65. RectF re2=new RectF(90,220,150,250);
  66. canvas.drawOval(re2, paint);
  67. /*画一个实心三角形*/
  68. Path path2=new Path();
  69. path2.moveTo(90, 330);
  70. path2.lineTo(150,330);
  71. path2.lineTo(120,270);
  72. path2.close();
  73. canvas.drawPath(path2, paint);
  74. /*画一个实心梯形*/
  75. Path path3=new Path();
  76. path3.moveTo(90, 410);
  77. path3.lineTo(150,410);
  78. path3.lineTo(135,350);
  79. path3.lineTo(105, 350);
  80. path3.close();
  81. canvas.drawPath(path3, paint);
  82. /*设置渐变色*/
  83. Shader mShader=new LinearGradient(0,0,100,100,
  84. new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},
  85. null,Shader.TileMode.REPEAT);
  86. //Shader.TileMode三种模式
  87. //REPEAT:沿着渐变方向循环重复
  88. //CLAMP:如果在预先定义的范围外画的话,就重复边界的颜色
  89. //MIRROR:与REPEAT一样都是循环重复,但这个会对称重复
  90. paint.setShader(mShader);//用Shader中定义定义的颜色来话
  91. /*画一个渐变色圆*/
  92. canvas.drawCircle(200,40,30, paint);
  93. /*画一个渐变色正方形*/
  94. canvas.drawRect(170, 90, 230, 150, paint);
  95. /*画一个渐变色长方形*/
  96. canvas.drawRect(170, 170, 230,200, paint);
  97. /*画一个渐变色椭圆*/
  98. RectF re3=new RectF(170,220,230,250);
  99. canvas.drawOval(re3, paint);
  100. /*画一个渐变色三角形*/
  101. Path path4=new Path();
  102. path4.moveTo(170,330);
  103. path4.lineTo(230,330);
  104. path4.lineTo(200,270);
  105. path4.close();
  106. canvas.drawPath(path4, paint);
  107. /*画一个渐变色梯形*/
  108. Path path5=new Path();
  109. path5.moveTo(170, 410);
  110. path5.lineTo(230,410);
  111. path5.lineTo(215,350);
  112. path5.lineTo(185, 350);
  113. path5.close();
  114. canvas.drawPath(path5, paint);
  115. /*写字*/
  116. paint.setTextSize(24);
  117. canvas.drawText("圆形", 240, 50, paint);
  118. canvas.drawText("正方形", 240, 120, paint);
  119. canvas.drawText("长方形", 240, 190, paint);
  120. canvas.drawText("椭圆形", 240, 250, paint);
  121. canvas.drawText("三角形", 240, 320, paint);
  122. canvas.drawText("梯形", 240, 390, paint);
  123. }
  124. }
  125. }

更多相关文章

  1. 默认不弹出输入面板
  2. android 动态设置background颜色
  3. android 设置全屏,导航栏透明
  4. java.net.SocketTimeoutException: connect timed out
  5. Android设置竖屏
  6. Android之Notification
  7. android 设置边框圆角
  8. 控件——SeekBar
  9. Android横屏竖屏切换的问题

随机推荐

  1. android:屏幕自适应
  2. 设置Android默认锁定屏幕旋转
  3. EditText常用属性
  4. Android与H5互调
  5. Android(安卓)屏幕适配,分辨率适配
  6. Android(安卓)systemserver 解析
  7. android 经典文章收集
  8. Android(安卓)Framework(II)Person Sampl
  9. 准备一个rubymotion for android的实际项
  10. android获取bluetooth的信号强度(RSSI)