首页 > 代码库 > Android Canvas Paint绘制文本
Android Canvas Paint绘制文本
字体有三种类型:1,内置基本字体 2,通过基本字体和样式,创建新的Typeface 3,引入外部的ttf文件。
示例代码如下:
1. package com.mike.activity;
2.
3. import android.R;
4. import android.app.Activity;
5. import android.graphics.Bitmap;
6. import android.graphics.Canvas;
7. import android.graphics.Color;
8. import android.graphics.Paint;
9. import android.graphics.Typeface;
10. import android.graphics.Paint.Style;
11. import android.graphics.Path;
12. import android.graphics.RectF;
13. import android.graphics.drawable.BitmapDrawable;
14. import android.os.Bundle;
15. import android.view.ViewGroup.LayoutParams;
16. import android.widget.ImageView;
17. import android.widget.LinearLayout;
18.
19. public class DrawDemoActivity extends Activity {
20. /** Called when the activity is first created. */
21. @Override
22. public void onCreate(Bundle savedInstanceState) {
23. super.onCreate(savedInstanceState);
24.
25. /*
26. * 配置類型:1,ALPHA_8: 用于Alpha蒙版的位图,只为alpha通道分配8位,没有其他颜色
27. * 2,ARGB_4444,
28. * 3,ARGB_8888,
29. * 4,RGB565(与ARGB_8888具有相同的高质量,但占用更少的内存)
30. *
31. * ARGB_8888 :每个颜色占8位,创建位图
32. * param : A:alpha通道:灰度通道,用来表明透明度信息,共256级
33. * R:red
34. * G:green
35. * B:blue
36. *
37. *
38. * Note: 蒙板:蒙板要结合图层来使用。蒙板的用处很多,可以用来扣图、创建选区等等,
39. * 由于我好久不用PS了,所以蒙板的好多功能在这里不能一下子讲完。
40. 举个通俗的例子:蒙板就是一块布,在某一图层上添加蒙板后就是在那个图层上盖了一块布,
41. 利用那块布可以实现多种效果,用黑色在蒙板上填充就看不见蒙板所在图层下面的东西,
42. 用白色填充就看见蒙板所在图层下面的东西,还可以利用蒙板制作渐变。
43. 总之蒙板这个功能说复杂它就复杂,说它简单它就简单,这个家伙功能不小。
44. *
45. */
46.
47.
48.
49. /*
50. * 1 , 内置字体 :
51. *
52. * a,Typeface.MONOSPACE: 等宽字代替,每个字母之间的间隔相等
53. * b, Typeface.SANS_SERIF: 无衬线
54. * c, Typeface.SERIF: 有衬线
55. * d, Typeface.DEFAULT: = Typeface.SANS_SERIF
56. * e, Typeface.DEFAULT_BOLD 无衬线粗体
57. *
58. *
59. *
60. * 2,字体样式 由基本字体和样式create 新的Typeface
61. * a,Typeface.BOLD 粗体
62. * b,Typeface.ITALIC 意大利体
63. * c,Typeface.NORMAL 普通
64. * d,Typeface.BOLD_ITALIC 粗意大利体
65. *
66. * 3,外部字体,通过asset引入ttf文件
67. */
68.
69.
70.
71.
72.
73.
74. Bitmap bitmap = Bitmap.createBitmap(getWindowManager().getDefaultDisplay().getWidth(),
75. getWindowManager().getDefaultDisplay().getHeight(),
76. Bitmap.Config.ARGB_8888);//配置
77.
78. Canvas canvas = new Canvas(bitmap); //画布
79.
80. Paint paint = new Paint();
81. paint.setColor(Color.WHITE);//可以直接设置颜色,也可通过Argb方法,,设置精确颜色
82. //int myColor = Color.argb(alpha, red, green, blue);
83. paint.setStrokeWidth(50);//设置此size并不改变TextSize
84.
85. //1,使用内置字体
86. paint.setTypeface(Typeface.DEFAULT);
87. //2,通过样式,创建字体
88. Typeface typeface = Typeface.create(Typeface.DEFAULT, Typeface.ITALIC);
89. //3,通过外部文件创建字体
90. // Typeface.createFromAsset(getAssets(), "filename.ttf");
91.
92. paint.setTextSize(50);//Size优先级更高
93. // canvas.drawText("hello", 100, 100, paint);//普通的绘制文本
94.
95.
96. /*
97. * 按照指定路径画字
98. */
99. Path path = new Path();
100. path.moveTo(10, 10);
101. path.lineTo(50, 50);
102. path.lineTo(150, 250);
103. canvas.drawTextOnPath("hello", path , 10, 10, paint);
104.
105.
106. ImageView imageView = new ImageView(this);
107.
108. LayoutParams p = new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT);
109. imageView.setLayoutParams(p);
110. imageView.setBackgroundDrawable(new BitmapDrawable(bitmap));
111.
112. setContentView(imageView);
113.
114.
115. }
116. }
示例代码如下:
1. package com.mike.activity;
2.
3. import android.R;
4. import android.app.Activity;
5. import android.graphics.Bitmap;
6. import android.graphics.Canvas;
7. import android.graphics.Color;
8. import android.graphics.Paint;
9. import android.graphics.Typeface;
10. import android.graphics.Paint.Style;
11. import android.graphics.Path;
12. import android.graphics.RectF;
13. import android.graphics.drawable.BitmapDrawable;
14. import android.os.Bundle;
15. import android.view.ViewGroup.LayoutParams;
16. import android.widget.ImageView;
17. import android.widget.LinearLayout;
18.
19. public class DrawDemoActivity extends Activity {
20. /** Called when the activity is first created. */
21. @Override
22. public void onCreate(Bundle savedInstanceState) {
23. super.onCreate(savedInstanceState);
24.
25. /*
26. * 配置類型:1,ALPHA_8: 用于Alpha蒙版的位图,只为alpha通道分配8位,没有其他颜色
27. * 2,ARGB_4444,
28. * 3,ARGB_8888,
29. * 4,RGB565(与ARGB_8888具有相同的高质量,但占用更少的内存)
30. *
31. * ARGB_8888 :每个颜色占8位,创建位图
32. * param : A:alpha通道:灰度通道,用来表明透明度信息,共256级
33. * R:red
34. * G:green
35. * B:blue
36. *
37. *
38. * Note: 蒙板:蒙板要结合图层来使用。蒙板的用处很多,可以用来扣图、创建选区等等,
39. * 由于我好久不用PS了,所以蒙板的好多功能在这里不能一下子讲完。
40. 举个通俗的例子:蒙板就是一块布,在某一图层上添加蒙板后就是在那个图层上盖了一块布,
41. 利用那块布可以实现多种效果,用黑色在蒙板上填充就看不见蒙板所在图层下面的东西,
42. 用白色填充就看见蒙板所在图层下面的东西,还可以利用蒙板制作渐变。
43. 总之蒙板这个功能说复杂它就复杂,说它简单它就简单,这个家伙功能不小。
44. *
45. */
46.
47.
48.
49. /*
50. * 1 , 内置字体 :
51. *
52. * a,Typeface.MONOSPACE: 等宽字代替,每个字母之间的间隔相等
53. * b, Typeface.SANS_SERIF: 无衬线
54. * c, Typeface.SERIF: 有衬线
55. * d, Typeface.DEFAULT: = Typeface.SANS_SERIF
56. * e, Typeface.DEFAULT_BOLD 无衬线粗体
57. *
58. *
59. *
60. * 2,字体样式 由基本字体和样式create 新的Typeface
61. * a,Typeface.BOLD 粗体
62. * b,Typeface.ITALIC 意大利体
63. * c,Typeface.NORMAL 普通
64. * d,Typeface.BOLD_ITALIC 粗意大利体
65. *
66. * 3,外部字体,通过asset引入ttf文件
67. */
68.
69.
70.
71.
72.
73.
74. Bitmap bitmap = Bitmap.createBitmap(getWindowManager().getDefaultDisplay().getWidth(),
75. getWindowManager().getDefaultDisplay().getHeight(),
76. Bitmap.Config.ARGB_8888);//配置
77.
78. Canvas canvas = new Canvas(bitmap); //画布
79.
80. Paint paint = new Paint();
81. paint.setColor(Color.WHITE);//可以直接设置颜色,也可通过Argb方法,,设置精确颜色
82. //int myColor = Color.argb(alpha, red, green, blue);
83. paint.setStrokeWidth(50);//设置此size并不改变TextSize
84.
85. //1,使用内置字体
86. paint.setTypeface(Typeface.DEFAULT);
87. //2,通过样式,创建字体
88. Typeface typeface = Typeface.create(Typeface.DEFAULT, Typeface.ITALIC);
89. //3,通过外部文件创建字体
90. // Typeface.createFromAsset(getAssets(), "filename.ttf");
91.
92. paint.setTextSize(50);//Size优先级更高
93. // canvas.drawText("hello", 100, 100, paint);//普通的绘制文本
94.
95.
96. /*
97. * 按照指定路径画字
98. */
99. Path path = new Path();
100. path.moveTo(10, 10);
101. path.lineTo(50, 50);
102. path.lineTo(150, 250);
103. canvas.drawTextOnPath("hello", path , 10, 10, paint);
104.
105.
106. ImageView imageView = new ImageView(this);
107.
108. LayoutParams p = new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT);
109. imageView.setLayoutParams(p);
110. imageView.setBackgroundDrawable(new BitmapDrawable(bitmap));
111.
112. setContentView(imageView);
113.
114.
115. }
116. }
Android Canvas Paint绘制文本
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。