zoukankan      html  css  js  c++  java
  • Canvas

    1. //把整张画布绘制成白色   
    2.         canvas.drawColor(Color.WHITE);  
    3.         Paint paint = new Paint();  
    4.           
    5.         //去锯齿   
    6.         paint.setAntiAlias(true);  
    7.         paint.setColor(Color.BLUE);  
    8.         paint.setStyle(Paint.Style.STROKE);  
    9.         paint.setStrokeWidth(3);  
    10.           
    11.         //绘制圆形   
    12.         canvas.drawCircle(404030, paint);  
    13.         //绘制正方形   
    14.         canvas.drawRect(108070140, paint);  
    15.         //绘制矩形   
    16.         canvas.drawRect(1015070190, paint);  
    17.   
    18.         RectF rel = new RectF(10,240,70,270);  
    19.         //绘制椭圆   
    20.         canvas.drawOval(rel, paint);  
    21.         //定义一个Path对象,封闭一个三角形   
    22.         Path path1 = new Path();  
    23.         path1.moveTo(10340);  
    24.         path1.lineTo(70340);  
    25.         path1.lineTo(40290);  
    26.         path1.close();  
    27.         //根据Path进行绘制,绘制三角形   
    28.         canvas.drawPath(path1, paint);  
    29.           
    30.         //定义一个Path对象,封闭一个五角星   
    31.         Path path2 = new Path();  
    32.         path2.moveTo(27360);  
    33.         path2.lineTo(54360);  
    34.         path2.lineTo(70392);  
    35.         path2.lineTo(40420);  
    36.         path2.lineTo(10392);  
    37.         path2.close();  
    38.         //根据Path进行绘制,绘制五角星   
    39.         canvas.drawPath(path2, paint);  
    40.           
    41.         //设置填丛风格后进行绘制   
    42.         paint.setStyle(Paint.Style.FILL);  
    43.         paint.setColor(Color.RED);  
    44.         canvas.drawCircle(1204030, paint);  
    45.         //绘制正方形   
    46.         canvas.drawRect(9080150140, paint);  
    47.         //绘制矩形   
    48.         canvas.drawRect(90150150190, paint);  
    49.           
    50.         //绘制圆角矩形   
    51.         RectF re2 = new RectF(90,200,150,230);  
    52.         canvas.drawRoundRect(re2, 1515, paint);  
    53.         //绘制椭圆   
    54.         RectF re21 = new RectF(90240150270);  
    55.         canvas.drawOval(re21, paint);  
    56.           
    57.         Path path3 = new Path();  
    58.         path3.moveTo(90340);  
    59.         path3.lineTo(150340);  
    60.         path3.lineTo(120290);  
    61.         path3.close();  
    62.         //绘制三角形   
    63.         canvas.drawPath(path3,paint);  
    64.           
    65.         //绘制五角形   
    66.         Path path4 = new Path();  
    67.         path4.moveTo(106360);  
    68.         path4.lineTo(134360);  
    69.         path4.lineTo(150392);  
    70.         path4.lineTo(120420);  
    71.         path4.lineTo(90392);  
    72.         path4.close();  
    73.         canvas.drawPath(path4, paint);  
    74.           
    75.         //设置渐变器后绘制   
    76.         //为Paint设置渐变器   
    77.         Shader mShasder = new LinearGradient(004060new int[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW}, null, Shader.TileMode.REPEAT);  
    78.         paint.setShader(mShasder);  
    79.         //设置阴影   
    80.         paint.setShadowLayer(451010, Color.GRAY);  

     

    1.下面的Xfermode子类可以改变这种行为:

    AvoidXfermode  指定了一个颜色和容差,强制Paint避免在它上面绘图(或者只在它上面绘图)。

    PixelXorXfermode  当覆盖已有的颜色时,应用一个简单的像素XOR操作。

    PorterDuffXfermode  这是一个非常强大的转换模式,使用它,可以使用图像合成的16条Porter-Duff规则的任意一条来控制Paint如何与已有的Canvas图像进行交互。

    要应用转换模式,可以使用setXferMode方法,如下所示:

    AvoidXfermode avoid = new AvoidXfermode(Color.BLUE, 10, AvoidXfermode.Mode. AVOID);    borderPen.setXfermode(avoid);

     

    2.Porter-Duff 效果图:

     


    3.16条Porter-Duff规则

    1.PorterDuff.Mode.CLEAR

       所绘制不会提交到画布上。
    2.PorterDuff.Mode.SRC

       显示上层绘制图片
    3.PorterDuff.Mode.DST

      显示下层绘制图片
    4.PorterDuff.Mode.SRC_OVER

      正常绘制显示,上下层绘制叠盖。
    5.PorterDuff.Mode.DST_OVER

      上下层都显示。下层居上显示。
    6.PorterDuff.Mode.SRC_IN

       取两层绘制交集。显示上层。
    7.PorterDuff.Mode.DST_IN

      取两层绘制交集。显示下层。
    8.PorterDuff.Mode.SRC_OUT

     取上层绘制非交集部分。
    9.PorterDuff.Mode.DST_OUT

     取下层绘制非交集部分。
    10.PorterDuff.Mode.SRC_ATOP

     取下层非交集部分与上层交集部分
    11.PorterDuff.Mode.DST_ATOP

      取上层非交集部分与下层交集部分
    12.PorterDuff.Mode.XOR

      
    13.PorterDuff.Mode.DARKEN


    14.PorterDuff.Mode.LIGHTEN


    15.PorterDuff.Mode.MULTIPLY


    16.PorterDuff.Mode.SCREEN

  • 相关阅读:
    [CSP-S模拟测试]:集合合并(记忆化搜索)
    [CSP-S模拟测试]:小L的数(数位DP+模拟)
    [CSP-S模拟测试]:小Y的图(最小生成树+LCA)
    [CSP-S模拟测试]:小W的魔术(数学 or 找规律)
    [CSP-S模拟测试]:最大值(数学+线段树)
    [CSP-S模拟测试]:最小值(DP+乱搞)
    [CSP-S模拟测试]:中间值(二分)
    [CSP-S模拟测试]:Cover(单调栈++单调队列+DP)
    [JZO6401]:Time(贪心+树状数组)
    BZOJ3193 [JLOI2013]地形生成 【dp】
  • 原文地址:https://www.cnblogs.com/lianghui66/p/3301165.html
Copyright © 2011-2022 走看看