? ?Canvas(画布)是一个用于绘制图形的重要类,它提供了一组绘图操作的方法,允许你在屏幕上绘制各种形状、图像和文本。下面是Canvas类的主要函数:
目录
功能:用指定的颜色填充整个画布
原型:
public void drawColor(@ColorInt int color)
参数:
示例:
drawColor(Color.BLACK); ?// 纯黑
drawColor(Color.parse("#88880000"); // 半透明红色
功能:在画布上绘制一个圆形。
原型:
public void drawCircle(float cx, float cy, float radius, @NonNull Paint paint)
参数:
cx
:圆心的横坐标。
cy
:圆心的纵坐标。
radius
:圆的半径。
paint
:用于指定绘制效果的画笔
示例:
Paint paint = new Paint();
?
paint.setColor(Color.RED);
?
canvas.drawCircle(300, 300, 100, paint);
?
功能:在画布上绘制一个矩形。
public void drawRect(float left, float top, float right, float bottom, @NonNull Paint paint)
参数:
left
:矩形左上角的横坐标。
top
:矩形左上角的纵坐标。
right
:矩形右下角的横坐标。
bottom
:矩形右下角的纵坐标。
paint
:用于指定绘制效果的画笔。
示例:
Paint paint = new Paint();
paint.setColor(Color.GREEN);
canvas.drawRect(100, 100, 400, 300, paint);
功能:在画布上绘制一条直线。
原型:
public void drawLine(float startX, float startY, float stopX, float stopY, @NonNull Paint paint)
参数:
startX
:起点的横坐标。
startY
:起点的纵坐标。
stopX
:终点的横坐标。
stopY
:终点的纵坐标。
paint
:用于指定绘制效果的画笔。
示例:
Paint paint = new Paint();
paint.setColor(Color.BLACK);
canvas.drawLine(50, 50, 200, 200, paint);
功能: 在画布上绘制文本。
原型:
public void drawText(String text, float x, float y, @NonNull Paint paint)
参数:
text
:要绘制的文本。
x
:文本起始点的横坐标。
y
:文本起始点的纵坐标。
paint
:用于指定绘制效果的画笔。
示例:
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setTextSize(30);
canvas.drawText("Hello, Canvas!", 50, 50, paint);
功能: 在画布上绘制位图。
原型:
void drawBitmap(Bitmap bitmap, float left, float top, Paint paint)
参数解释:
bitmap
:要绘制的位图。left
:位图左上角的横坐标。top
:位图左上角的纵坐标。paint
:用于指定绘制效果的画笔。示例:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sample_image);
canvas.drawBitmap(bitmap, 100, 200, null);
功能:在画布上绘制指定的路径。
原型:
public void drawPath(Path path, @NonNull Paint paint)
参数:
path
:要绘制的路径。
paint
:用于指定绘制效果的画笔。
示例:
Paint paint = new Paint();
paint.setColor(Color.RED);
Path path = new Path();
path.moveTo(100, 100);
path.lineTo(300, 100);
path.lineTo(200, 300);
path.close();
canvas.drawPath(path, paint);
功能:在画布上绘制一个弧形。
原型:
public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, @NonNull Paint paint)
参数解释:
oval
:包围弧形的矩形。
startAngle
:弧形起始角度,以 x 轴正方向为 0 度。
sweepAngle
:弧形扫过的角度。
useCenter
:是否连接到圆心形成一个扇形。
paint
:用于指定绘制效果的画笔。
示例:
Paint paint = new Paint();
paint.setColor(Color.GREEN);
RectF oval = new RectF(100, 100, 300, 300);
canvas.drawArc(oval, 45, 90, true, paint);
功能: 在画布上绘制一个椭圆。
原型:
public void drawOval(RectF oval, Paint paint)
参数:
oval
:包围椭圆的矩形。
paint
:用于指定绘制效果的画笔。
示例:
Paint paint = new Paint();
paint.setColor(Color.BLUE);
RectF oval = new RectF(100, 100, 300, 200);
canvas.drawOval(oval, paint);
功能:设置画布的裁剪区域为矩形。
原型:
public boolean clipRect(Rect rect)
参数:
rect
:裁剪的矩形区域。
示例:
Rect rect = new Rect(50, 50, 200, 200);
canvas.clipRect(rect);
功能:设置画布的裁剪区域为路径。
原型:
public boolean clipPath(Path path)
参数:
path
:裁剪的路径。
示例:
Path path = new Path();
// 添加路径操作,例如 moveTo、lineTo
canvas.clipPath(path);
功能:平移画布。
原型:
public void translate(float dx, float dy)
参数:
dx
:水平方向上的平移距离。
dy
:垂直方向上的平移距离。
示例:
canvas.translate(100, 50); // 将画布在水平方向上平移 100,垂直方向上平移 50
功能: 缩放画布。
原型:
public void scale(float sx, float sy)
参数:
sx
:水平方向上的缩放比例。
sy
:垂直方向上的缩放比例。
示例:
canvas.scale(1.5f, 2.0f); // 将画布在水平方向上放大 1.5 倍,垂直方向上放大 2 倍
功能: 旋转画布。
原型:
public void rotate(float degrees)
参数:
degrees
:旋转的角度。示例:
canvas.rotate(45); // 将画布顺时针旋转 45 度
功能: 斜切(错切)画布。
原型:
void skew(float sx, float sy)
参数解释:
sx
:水平方向上的错切因子。sy
:垂直方向上的错切因子。示例:
canvas.skew(0.2f, 0); // 在水平方向上进行横向错切
功能: 使用矩阵进行多种变换。
原型:
void concat(Matrix matrix)
参数解释:
matrix
:变换矩阵。示例:
Matrix matrix = new Matrix();
matrix.postTranslate(100, 50); // 平移
matrix.postRotate(45); // 旋转
canvas.concat(matrix); // 应用变换矩阵
功能: 保存和恢复画布的状态,包括平移、缩放、旋转等变换。
原型:
int save()
void restore()
无参数。
示例:
int saveCount = canvas.save(); // 保存当前画布状态
// 在这里进行绘制和变换操作
canvas.restoreToCount(saveCount); // 恢复到保存的画布状态