Android_图像处理技术01_常用绘图类
常用绘图类
| 类 | 描述 |
| Paint 类 | 画笔类,用来描述图形的颜色和风格 |
| Canvas 类 | 画布类,用于绘制各种图形 |
| Path 类 | 路径类,用于绘制路径 |
| Bitmap 类 | 位图类,用于获取图像文件信息,主要对图像进行剪切、旋转、缩放等操作 |
| BitmapFactory 类 | 位图工厂类,用于从不同的数据源来分析、创建 Bitmap 对象 |
1、Paint 类
Paint 类代表画笔,用来描述图形的颜色和风格,如线宽、颜色、透明度和填充效果等信息。使用如下:
Paint paint = new Paint(); // 画笔类,用来描述图形的颜色和风格 /** * 创建一个沿线绘制线性渐变的着色器。 * * @param x0 渐变线起点的x坐标 * @param y0 渐变线起点的y坐标 * @param x1 渐变线末端的x坐标 * @param y1 渐变线末端的y坐标 * @param color0 渐变线开头的颜色。 * @param color1 渐变线末端的颜色。 * @param tile 着色器平铺模式 */ Shader shader = new LinearGradient(0, 0, 100, 100, Color.RED, Color.GREEN, Shader.TileMode.MIRROR); paint.setShader(shader); // 为画笔设置渐变器
Shader 类中的 TileMode
public enum TileMode { /** * 如果着色器在其原始边界之外绘制,则复制边缘颜色 */ CLAMP (0), /** * 水平和垂直重复着色器的图像 */ REPEAT (1), /** * 水平和垂直重复着色器的图像,交替镜像,使相邻的图像始终接缝 */ MIRROR (2); TileMode(int nativeInt) { this.nativeInt = nativeInt; } final int nativeInt; }

2、Canvas 类
Canvas 类代表画布,通过该类提供的方法,可以绘制各种图形(如矩形、圆形和线条等)。
通常情况下,要在 Android 中绘图,需要先创建一个继承自 View 类的视图,并且在该类中重写其 onDraw(Canvas canvas) 方法,然后在显示绘图的 Activity 中添加该视图。
public class CanvasActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_canvas); FrameLayout frameLayout = (FrameLayout) findViewById(R.id.fl_frameLayout); frameLayout.addView(new MyView(this)); // 将自定义视图的内部类添加到帧布局管理器中 } private class MyView extends View { public MyView(Context context) { super(context); } /** * 编写绘图代码 * * @param canvas 进行绘图的画布 */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); Shader shader = new LinearGradient(0, 0, 100, 100, Color.RED, Color.GREEN, Shader.TileMode.CLAMP); paint.setShader(shader); /** * 使用指定的画笔绘制指定的Rect。 矩形将根据画笔中的样式填充或加框。 * * @param left 要绘制的矩形的左侧 * @param top 要绘制的矩形的顶边 * @param right 要绘制的矩形的右侧 * @param bottom 要绘制的矩形的底边 * @param paint 用于绘制矩形的画笔 */ canvas.drawRect(10, 10, 280, 150, paint); // 绘制矩形 } } }
3、Path 类
Path 类用于绘制路径,该类中包含一组矢量绘图方法,图画圆、矩形、弧、线条等。
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE); // 使用此样式绘制的几何和文本将被描边,尊重绘画上与笔划相关的字段。 // 画折线 Path path = new Path(); path.moveTo(50, 50); // 设置起点,默认(0, 0) path.lineTo(100, 10); // 设置第1条线的结束点,也是第2条线的起始点 path.lineTo(150, 50); // 设置第2条线的结束点 // 若要绘制三角形,可以在最后使用 close() 方法闭合路径 // path.close(); canvas.drawPath(path, paint); }
结果展示:

绘制各种各样的图形 https://blog.csdn.net/u012702547/article/details/52454406
4、Bitmap 类
Bitmap 类代表位图,是 Android 系统中图像处理的一个重要类。使用该类,使用该类,不仅可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,而且还可以指定格式保存图像文件。
常用方法:

用于将 Bitmap 对象压缩为指定格式并保存到指定的文件输出流中,其中 format 参数值可以是 Bitmap.CompressFormat.PNG、Bitmap.CompressFormat.JPG 和 Bitmap.CompressFormat.WEBP。

@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建一个4个像素(每个像素对应一种颜色)的 Bitmap 对象 Bitmap bitmap = Bitmap.createBitmap(new int[]{Color.RED, Color.GREEN, Color.BLUE, Color.MAGENTA}, 4, 1, Bitmap.Config.RGB_565); canvas.drawBitmap(bitmap, 10, 10, new Paint()); }
5、BitmapFactory 类
用于从不同的数据源来解析、创建 Bitmap 对象。
常用方法:

@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 解析SD卡上的图片文件,并创建 Bitmap对象 String path = Environment.getExternalStorageDirectory().getPath() + "/img01.png"; Bitmap bitmap = BitmapFactory.decodeFile(path); // 解析 Drawable资源中保存的文件,并创建 Bitmap对象 Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.img02); canvas.drawBitmap(bitmap, 10, 10, new Paint()); }
浙公网安备 33010602011771号