Android中Paint画图(线、矩形、圆形、三角形、旋转文字)
- 作者: 我妈不知道我这么屌
- 来源: 51数据库
- 2021-07-28
线
private void drawLine(Canvas canvas,
float startX,float startY,float stopX,float stopY,
float width,int color){
Paint paint = new Paint();
paint.setAntiAlias(true);//抗锯齿
paint.setStyle(Paint.Style.STROKE);//不加这个不显示
paint.setColor(color);
paint.setStrokeWidth(width);
Path mPath = new Path();
mPath.moveTo(startX, startY);
mPath.lineTo(stopX, stopY);
mPath.close();
//***************旋转线
//1.
canvas.save();
canvas.translate(startX, startY);//根据指定坐标旋转
//水平翻转
canvas.scale(-1,1);
//垂直翻转
canvas.scale(1,-1);
canvas.translate(-startX, -startY);
//2.
canvas.rotate(90, startX, startY);//根据指定角度、坐标来旋转
canvas.drawPath(mPath, paint);
canvas.restore();
}
矩形
private void drawRectangle(Canvas canvas,boolean choose,
float left,float top,float right,float bottom,int color){
Paint paint = new Paint();
paint.setAntiAlias(true);//抗锯齿
paint.setColor(color);
if (choose){
//设置实心矩形
paint.setStyle(Paint.Style.FILL);
}else{
//设置空心矩形
paint.setStyle(Paint.Style.STROKE);
}
//使用画笔在画布上画矩形
canvas.drawRect(left,top,right,bottom,paint);
}
圆形
private void drawYuan(Canvas canvas,boolean choose,
float startX,float startY,float radius,int color){
Paint paint = new Paint();
paint.setAntiAlias(true);//抗锯齿
paint.setColor(color);
if (choose){
//设置实心圆
paint.setStyle(Paint.Style.FILL);
}else{
//设置空心圆
paint.setStyle(Paint.Style.STROKE);
}
//X、Y坐标,radius半径
canvas.drawCircle(startX, startY, radius, paint);
}
三角形
private void drawTriangle(Canvas canvas,boolean choose,
float startX,float startY,
float afterX,float afterY,
float stopX,float stopY,
float width,int color){
Paint paint = new Paint();
paint.setAntiAlias(true);//抗锯齿
paint.setStrokeWidth(width);
paint.setColor(color);
if (choose){
//设置实心三角形
paint.setStyle(Paint.Style.FILL);
}else{
//设置空心三角形
paint.setStyle(Paint.Style.STROKE);
}
Path mPath = new Path();
mPath.moveTo(startX, startY);
mPath.lineTo(afterX, afterY);
mPath.lineTo(stopX, stopY);
//将mpath封闭,也可以写 mpath.lineTo(100, 100);代替
mPath.close();
//绘制path路径
canvas.drawPath(mPath, paint);
}
旋转文字
private void drawText(Canvas canvas,String str,int size,float degrees,float startX,float
startY,int color){
Paint paint = new Paint();
paint.setAntiAlias(true);//抗锯齿
paint.setColor(color);
paint.setTypeface(Typeface.DEFAULT_BOLD);//字体
Typeface font = Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL);//字体风格
paint.setTypeface(font);
paint.setTextSize(size);
//Paint设置水平居中
paint.setTextAlign(Paint.Align.CENTER);
float length = paint.measureText(str);//获取字体的长度
float ncenterx = startX + (size - length) / 2;
if (degrees!=0){
//以指定坐标点旋转指定角度
canvas.rotate(degrees, ncenterx, startY);
}
canvas.drawText(str, ncenterx,startY,paint);
}
?
推荐阅读
热点文章
android中Bitmap用法(显示,保存,缩放,旋转)实例分析
12
android 仿微信聊天气泡效果实现思路
1
Android的尺度,drawable-xxxxxxx
2
Codeforces Round #656 (Div. 3) (C、D题)
1
Android之handler异步消息处理机制解析
6
GridView中图片显示出现上下间距过大,左右图片显示类似瀑布流的问题
0
AsyncTask的简单使用
5
两个简单Fragment之间的通信(三种方式)
18
uboot修改设置boot参数命令
41
android中实现从相册中一次性获取多张图片与拍照,并将选中的图片显示出来
2