Android自定义view之 Graphics2D Api(中)

时间:2021-11-05 20:36:13

Canvas类翻译为画布,Canvas提供若干刚发用来绘制图形图案比如点,线,圆等等。Paint类翻译为画笔,为绘图定义参数如颜色,线条样式,图案样式等等。通常的绘图思路是先定义Paint对象,指定绘图参数,在通过Canvas绘图,绘图结果因paint不同而不同。

Paint类

Paint 类与颜色相关的方法:
public native void setColor(int color);//设置颜色
public native void setAlpha(int a);//设置透明度 a取值范围0–255
public native void setARGB(int a,int r,int g,intb)//指定透明度 红绿蓝


Paint类与文本相关的方法:
public native void setTextSize(float size)//设置文字大小这个单位是px,需要我们自己转为sp.
public void setTextAlign(Paint.Align align)//对齐方式 left right center三个可选择的值
public native void setTextSkewX(float skewx)//设置文字倾斜程度取值在0-1之间,正负表示倾斜方向.
public native void setUnderlineText(boolean unserline)//设置是否加下划线,true表示添加
public native void setFakeBoldText(boolean fake)//设置是否加粗,true表示加粗
public native void setStrikeThruText(boolean text)//设置是否加删除线,true表示添加


Paint 类与图形样式相关的方法:
public void setStyle(Paint.Style style);//设置图形样式是空心还是实心,默认为实心,style可选值有 FILL(实心),FILL_AND_STROKE(同时使用空心和实心),STROKE(空心)
public void setStrokeJoin(Paint.Join join);//当style为stroke时设置线条连接处拐角样式。有三个值MITER,ROUND,BEVEL
Android自定义view之 Graphics2D Api(中)
public void setStrokeCap(Paint.Cap cap);//设置画笔在离开画板是留下的最后一点图形可选值为 BUTT,ROUND,SQUARE
Android自定义view之 Graphics2D Api(中)
public native void setStrokeWidth(float width)//设置线条宽度



Canvas类

绘制位图:
public void drawBitmap(Bitmap bitmap,float left ,float top,Paint paint)//
public void drawBitmap(Bitmap bitmap,Rect src,Rect dst,Paint paint)
public void drawBitmap(Bitmap bitmap,RectF src,Rect dst,Paint paint)
上面两个方法从bitmap中扣除一个src的区域,绘制到canvas的dst处,src和dst的大小比例会影响 结果。


绘制点:
public void drawPoint(float x,float y ,Paint paint);
public void drawPoints(float[] points,Paint paint);以数组的形式绘制点,两个数为一组
public void drawPoints(float[] points int offset,int count,Paint paint)


绘制线
public void drawLine(float startx,float starty ,flaot stopx,float stopy,Paint paint);
public void drawLines(float[] points,Paint paint);以数组的形式绘制线,四个数为一组
public void drawLines(float[] points int offset,int count,Paint paint)


绘制矩形
public void drawRect(float left,float top ,flaot right,float bottom,Paint paint);
public void drawRect(Rect rect,Paint paint);
public void drawRect(RectF rect,Paint paint)
public void drawRoundRect(float left,float top ,flaot right,float bottom,float rx,float ry,Paint paint);//绘制圆角矩形
public void drawRoundRect(RectF rect,float rx,float ry,Paint paint);


绘制圆,椭圆,扇形,弧线
public void drawCicle(float x,float y,flaot radius,Paint paint)//绘制圆
椭圆的大小是由外切矩形来决定的
public void drawOval(float left,float top ,flaot right,float bottom,Paint paint)
public void drawOval(RectF oval ,Paint paint)
绘制弧线和扇形
public void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)
public void drawArc(float left,float top ,flaot right,float bottom, float startAngle, float sweepAngle, boolean useCenter, Paint paint)
useCenter为true表示扇形为false表示弧线