1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android 绘图之Canvas Paint类

android 绘图之Canvas Paint类

时间:2021-03-19 11:51:36

相关推荐

android 绘图之Canvas Paint类

Canvas,Paint

1.在android 绘图但中经常要用到Canvas和Paint类,Canvas好比是一张画布,上面已经有你想绘制图画的轮廓了,而Paint就好比是画笔,就要给Canvas进行添色等操作。

这两个类通常都是在onDraw(Canvas canvas)方法中用的。

2.Bitmap:代表一张位图,BitmapDrawable里封装的突变就是一个Bitmao对象

3.Canvas里面有一些例如:

drawArc(参数) 绘制弧

drawBitmao(Bitmap bitmap ,Rect rect,Rect dst,Paint paint) 在指定点绘制从源图中"挖取"的一块

clipRect(float left,float top,float right,float bottom) 剪切一个矩形区域

clipRegion(Region region) 剪切一个指定区域。

Canvas除了直接绘制一个基本图形外,还提供了如下方法进行坐标变化:

rotate(float degree,float px, float py):对Canvas执行旋转变化

scale(float sx,float sy,float px,float py):对Cnavas进行缩放变换

skew(float sx,float sy):对Canvas执行倾斜变换

translate(float dx,float dy):对Cnavas执行移动

4.Paint类主要用于设置绘制风格包括画笔颜色,画笔粗细,填充风格等,

Paint提供了一些方法

setARGB(int a,int r,int g,int b)/setColor(int color) :设置颜色

等一些方法

5.下面通过一个例子来说明一下这两个类:

1 public class MyView extends View { 2 3public MyView(Context context) { 4 super(context); 5 // TODO Auto-generated constructor stub 6} 7 8public MyView(Context context, AttributeSet attrs) { 9 super(context, attrs);10 // TODO Auto-generated constructor stub11}12 13public MyView(Context context, AttributeSet attrs, int defStyle) {14 super(context, attrs, defStyle);15 // TODO Auto-generated constructor stub16}17 18// 重写该方法,进行绘图19@Override20protected void onDraw(Canvas canvas) {21 super.onDraw(canvas);22 // 整张画布绘制成白色23 canvas.drawColor(Color.WHITE);24 Paint paint = new Paint();25 // 去锯齿26 paint.setAntiAlias(true);27 paint.setColor(Color.BLUE);28 paint.setStyle(Style.STROKE);29 paint.setStrokeWidth(3);30 // 绘制图形31 canvas.drawCircle(40, 40, 30, paint);32 // 绘制正方型33 canvas.drawRect(10, 80, 70, 140, paint);34 // 绘制矩形35 canvas.drawRect(10, 150, 70, 190, paint);36 RectF rel = new RectF(10, 200, 70, 230);37 // 绘制圆角矩形38 canvas.drawRoundRect(rel, 15, 15, paint);39 RectF rell = new RectF(10, 240, 70, 270);40 // 绘制椭圆41 canvas.drawOval(rell, paint);42 // 定义一个Path对象,封闭成一个三角形43 Path path1 = new Path();44 path1.moveTo(10, 340);45 path1.lineTo(70, 340);46 path1.lineTo(40, 290);47 path1.close();48 49}50 51 }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。