Android学习心得(1)——绘图
Android学习心得(一)——绘图
做java的都知道,绘图肯定首先需要一个Canvas,然后在用Graphics在上面绘制自己想要图案。不错,Android上面也类似,你可以从一个Bitmap得到它的Canvas,进行绘制,也可以自定义一个View,用它的Canvas。不同的时,Android里没有Graphics,而用Paint代之,当然用法也稍有不同。以下是自定义View的一段代码:
以上需要注意的有三点:
1、Android中的Rect和java中的可能稍有区别,前两个参数是左上角的坐标,后两个参数是右下角的坐标(不是宽度和高度);
2、Style.STROKE和Style.FILL外边的像素数是有区别的,这点和java里一样;
3、绘文字时,设置的坐标点为(30,30),但绘出来后你会发现,文字的左上角坐标要比你设置的偏上,不知道是android设置的bug,还是我们有理解到坐标点的意义。
(作者:子轩,邮箱:zh1003@163.com)
[本节结束]
canvas.drawBitmap可以不用paint参数
绘制文本时指定的坐标是指文本显示的左下角坐标,故如果指定为(0,0),最后你是看不到文本的,只隐约在画布顶部看到一条线,因为真正的文本在画布的上方。
做java的都知道,绘图肯定首先需要一个Canvas,然后在用Graphics在上面绘制自己想要图案。不错,Android上面也类似,你可以从一个Bitmap得到它的Canvas,进行绘制,也可以自定义一个View,用它的Canvas。不同的时,Android里没有Graphics,而用Paint代之,当然用法也稍有不同。以下是自定义View的一段代码:
@Override public void onDraw(Canvas canvas) { // 首先定义一个paint Paint paint = new Paint(); // 绘制矩形区域-实心矩形 // 设置颜色 paint.setColor(Color.WHITE); // 设置样式-填充 paint.setStyle(Style.FILL); // 绘制一个矩形 canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint); // 绘空心矩形 // 设置颜色 paint.setColor(Color.RED); // 设置样式-空心矩形 paint.setStyle(Style.STROKE); // 绘制一个矩形 canvas.drawRect(new Rect(10, 10, 50, 20), paint); // 绘文字 // 设置颜色 paint.setColor(Color.GREEN); // 绘文字 canvas.drawText(str, 30, 30, paint); // 绘图 // 从资源文件中生成位图 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon); // 绘图 canvas.drawBitmap(bitmap, 10, 10, paint); }
以上需要注意的有三点:
1、Android中的Rect和java中的可能稍有区别,前两个参数是左上角的坐标,后两个参数是右下角的坐标(不是宽度和高度);
2、Style.STROKE和Style.FILL外边的像素数是有区别的,这点和java里一样;
3、绘文字时,设置的坐标点为(30,30),但绘出来后你会发现,文字的左上角坐标要比你设置的偏上,不知道是android设置的bug,还是我们有理解到坐标点的意义。
(作者:子轩,邮箱:zh1003@163.com)
[本节结束]
1 楼
yangrunfei
2009-06-25
2 楼
kevin2562
2010-03-09
首先感谢搂主的例子,让我了解了android的绘图技巧
但是我还有一点疑问:
canvas.drawBitmap这个方法中为什么还要传入paint 这个参数?
该参数的作用是什么?
但是我还有一点疑问:
canvas.drawBitmap这个方法中为什么还要传入paint 这个参数?
该参数的作用是什么?
3 楼
zx012345
2010-03-26
kevin2562 写道
首先感谢搂主的例子,让我了解了android的绘图技巧
但是我还有一点疑问:
canvas.drawBitmap这个方法中为什么还要传入paint 这个参数?
该参数的作用是什么?
但是我还有一点疑问:
canvas.drawBitmap这个方法中为什么还要传入paint 这个参数?
该参数的作用是什么?
canvas.drawBitmap可以不用paint参数
4 楼
wzc0066
2011-07-05
引用
3、绘文字时,设置的坐标点为(30,30),但绘出来后你会发现,文字的左上角坐标要比你设置的偏上,不知道是android设置的bug,还是我们有理解到坐标点的意义。
绘制文本时指定的坐标是指文本显示的左下角坐标,故如果指定为(0,0),最后你是看不到文本的,只隐约在画布顶部看到一条线,因为真正的文本在画布的上方。