闲来无事玩起了PS

PS做得不咋滴
现在用Android代码写一个.
Paint circlePaint = new Paint();
int centerX = 0, centerY = 0;
int dark = 0xFF1A766A;//深色
int light = 0xFFABFEEE;//浅色
float sR = 100;//小圆半径
float bR = 300;//大圆半径
float mR = (sR + bR) / 2;//中圆半径
float degrees = 0;//旋转角度
private void drawLeaf(int degrees) {
Directer.canvas.save();
Directer.canvas.rotate(degrees, centerX, centerY);
Path path2 = new Path();
RectF oval1 = new RectF(centerX - mR, centerY + bR - mR - mR, centerX + mR, centerY + bR);
path2.addArc(oval1, 90, 180);//剪裁一个半圆
RectF oval2 = new RectF(centerX, centerY, centerX + mR, centerY + mR);
path2.addRect(oval2, Path.Direction.CCW);//剪裁剩余不需要的部分
Directer.canvas.clipPath(path2, Region.Op.DIFFERENCE);
LinearGradient lg = new LinearGradient(centerX - bR + mR + mR, centerY - mR,
centerX - bR + mR - mR * 0.7f, centerY + mR * 0.7f, light, dark, Shader.TileMode.MIRROR);
circlePaint.setShader(lg);//渐变色
Directer.canvas.drawCircle(centerX - bR + mR, centerY, mR, circlePaint);
Directer.canvas.restore();
}
public void update() {
degrees = (degrees + 400 * Time.deltaTime) % 360;
circlePaint.setShader(null);
circlePaint.setAntiAlias(true);
Directer.canvas.save();
Directer.canvas.rotate(degrees, centerX, centerY);
Path path = new Path();
path.addCircle(centerX, centerY, sR, Path.Direction.CCW);
Directer.canvas.clipPath(path, Region.Op.DIFFERENCE);//剪裁中间空心小圆
circlePaint.setColor(dark);
Directer.canvas.drawCircle(centerX, centerY, bR, circlePaint);//绘制大圆
drawLeaf(0);
drawLeaf(90);
drawLeaf(180);
drawLeaf(270);
Directer.canvas.restore();
}
完成效果

会转动的哦
本文介绍使用Android代码绘制多个圆交叉的效果。通过定义画笔、圆心、颜色、半径等参数,利用Path和canvas的方法进行图形剪裁和绘制,还实现了转动效果。代码中包含绘制半圆、矩形、圆等操作,以及渐变色设置。

被折叠的 条评论
为什么被折叠?



