• 5.Andorid绘图方法(Canvas)


    做java的都知道,绘图肯定首先需要一个Canvas,然后在用Graphics在上面绘制自己想要图案。不错,Android上面也类似,你可以从一 个Bitmap得到它的Canvas(new Canvas(BitMap bitMap)),进行绘制,也可以自定义一个View,用它的Canvas。不同的是,Android里没有Graphics,而用 Paint代之,当然用法也稍有不同。以下是自定义View的一段代码:  
    Java代码

     1     @Override
    2 public void onDraw(Canvas canvas) {
    3 // 首先定义一个paint
    4 Paint paint = new Paint();
    5
    6 // 绘制矩形区域-实心矩形
    7 // 设置颜色
    8 paint.setColor(Color.WHITE);
    9 // 设置样式-填充
    10 paint.setStyle(Style.FILL);
    11 // 绘制一个矩形
    12 canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);
    13
    14 // 绘空心矩形
    15 // 设置颜色
    16 paint.setColor(Color.RED);
    17 // 设置样式-空心矩形
    18 paint.setStyle(Style.STROKE);
    19 // 绘制一个矩形
    20 canvas.drawRect(new Rect(10, 10, 50, 20), paint);
    21
    22 // 绘文字
    23 // 设置颜色
    24 paint.setColor(Color.GREEN);
    25 // 绘文字
    26 canvas.drawText(str, 30, 30, paint);
    27
    28 // 绘图
    29 // 从资源文件中生成位图
    30 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
    31 // 绘图
    32 canvas.drawBitmap(bitmap, 10, 10, paint);
    33 }

    以上需要注意的有三点:  
    1、Android中的Rect和java中的可能稍有区别,前两个参数是左上角的坐标,后两个参数是右下角的坐标(不是宽度和高度);  
    2、Style.STROKE和Style.FILL外边的像素数是有区别的,这点和java里一样;  
    3、绘文字时,设置的坐标点为(30,30),但绘出来后你会发现,文字的左上角坐标要比你设置的偏上,不知道是android设置的bug,还是我们有理解到坐标点的意义。 


  • 相关阅读:
    ffmpeg处理RTMP流媒体的命令大全
    人像摄影技巧——镜头差异可改变脸部印象
    windows操作系统自带的TCP端口转发
    IIS7.5如何限制某UserAgent 禁止访问
    JS显示上一周
    mysql主从复制(超简单)
    0001-BUGIFX-Magento-Zend-Framework-1-PHP5.6.patch
    Nginx启用Gzip压缩js无效的原因
    开启Nginx的gzip压缩功能详解
    Python 中的垃圾回收机制
  • 原文地址:https://www.cnblogs.com/renkangke/p/2421900.html
Copyright © 2020-2023  润新知