自定义View基础(三)View的绘图篇

来源:互联网 发布:淘宝发布宝贝没有品牌 编辑:程序博客网 时间:2024/06/05 05:10

   把自己整理的发出来,具体Demo就不放了


1.Paint类:画笔类

        void  setAlpha(int a)  设置alpha不透明度,范围为0~255
      void  setAntiAlias(boolean aa)  //是否抗锯齿,边缘更清晰一些,锯齿痕迹不会那么明显。但会消耗较大资源,绘制图形速度会变慢。
      void  setColor(int color)  //设置颜色
      void  setStrokeWidth(float width) //设置描边画笔宽度
      void  setDither(boolean dither);//设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰  
      void  setStyle(Paint.Style style); //Style.FILL: 填充  
                                           STROKE:描边  
                                           FILL_OR_STROKE: 填充且描边
      void setShadowLayer(float radius, float dx, float dy, int shadowColor) 设置阴影
                                           radius : 表示阴影的倾斜度
                                           dx : 水平位移
                                           dy : 垂直位移
                                           shadowColor : 阴影颜色
      //处理文本
      void  setFakeBoldText(boolean fakeBoldText)  //设置伪粗体文本
      void  setLinearText(boolean linearText)  //设置线性文本
      void  setTextAlign(Paint.Align align)  //设置文本对齐
      void  setTextScaleX(float scaleX)  //设置文本缩放倍数,1.0f为原始
      void  setTextSize(float textSize)  //设置字体大小
      void  setUnderlineText(boolean underlineText)  //设置下划线      
      //得到TextView的矩形区域
      mBound = new Rect();  
      mPaint.getTextBounds(mTitleText, 0, mTitleText.length(), mBound);              
      mBound.width();//矩形区域的宽
      mBound.height()//矩形区域的高

                                                                           
2.Canvas类:画板类,相当于纸,无限大,没有边界
      //设置背景颜色
      canvas.drawColor(Color.BLUE);
      canvas.drawRGB(255, 255, 0);     
       
      drawLines(@Size(min=4,multiple=2) float[] pts, int offset, int count, Paint paint)
      drawLines(@Size(min=4,multiple=2) @NonNull float[] pts, @NonNull Paint paint)
                  参数:
                  pts : 是点的集合且大小最小为4而且是2的倍数。表示每2个点连接形成一条直线,pts 的组织方式为{x1,y1,x2,y2….}
                  offset : 集合中跳过的数值个数,注意不是点的个数!一个点是两个数值
                  count : 参与绘制的数值的个数,指pts[]里数值个数,而不是点的个数,因为一个点是两个数值
      void drawLine(float startX, float startY, float stopX, float stopY, Paint paint)  //画线,参数一起始点的x轴位置,
                                                                                                参数二起始点的y轴位置,
                                                                                                参数三终点的x轴水平位置,
                                                                                                参数四y轴垂直位置,
                                                                                                参数五为Paint画刷对象。   
      
      void drawPoint(float x, float y, Paint paint) //画点,参数一二表示一个点,第三个参数为Paint对象。
      void drawPoints(@Size(multiple=2) @NonNull float[] pts, @NonNull Paint paint)
      
      void drawRect(RectF rect, Paint paint) //绘制区域,RectF坐标系是浮点型;Rect坐标系是整形。
      void drawRoundRect(@NonNull RectF rect, float rx, float ry, @NonNull Paint paint)//rx生成圆角的椭圆X轴半径
                                                                                         ry生成圆角的椭圆Y轴的半径
      void drawCircle(float cx, float cy, float radius, @NonNull Paint paint)//画圆,圆心坐标,半径
      void drawOval(@NonNull RectF oval, @NonNull Paint paint)//椭圆
      void drawArc(@NonNull RectF oval, float startAngle, float sweepAngle, boolean useCenter,@NonNull Paint paint)
                                                               //圆弧
                                                               oval : 生成椭圆的矩形
                                                               startAngle : 弧开始的角度 (X轴正方向为0度,顺时针弧度增大)
                                                               sweepAngle : 绘制多少弧度 (注意不是结束弧度)
                                                               useCenter : 是否有弧的两边 true有两边 false无两边
                                                                   
      void drawPath(Path path, Paint paint) //绘制一个路径,参数一为Path路径对象                       
                                           
      void drawBitmap(Bitmap bitmap, Matrix m, Paint paint);
                                                                                          
      void drawText(String text, float x, float y, Paint paint)//渲染文本,x为左上角坐标的x坐标,y为右下角坐标的y坐标
      void drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint)//在路径上绘制文本,
                                                                                               相对于上面第二个参数是Path路径对象     
      

3.Path类详解:
     moveTo     移动起点     移动下一次操作的起点位置
     lineTo     连接直线     连接上一个点到当前点之间的直线
     setLastPoint     设置终点     重置最后一个点的位置
     close     闭合路劲     从最后一个点连接最初的一个点,形成一个闭合区域
     rMoveTo,rlineTo,rQuadTo,rCubicTo     rXxx方法     不带r的方法是基于原点坐标系(偏移量),带r的基于当前绘制点坐标(偏移量)
     
     addRect     添加矩形     添加矩形到当前Path
     addRoundRect     添加圆角矩形     添加圆角矩形到当前Path
     addOval     添加椭圆     添加椭圆到当前Path
     addCircle     添加圆     添加圆到当前Path
     addPah     添加路劲     添加路劲到当前Path
     addArc     添加圆弧     添加圆弧到当前Path
     arcTo     圆弧     绘制圆弧,注意和addArc的区别
            mPath.arcTo(ovalRectF, startAngle, sweepAngle) , ovalRectF为椭圆的矩形,startAngle 为开始角度,sweepAngle 为结束角度。顺时针旋转
     isEmpty     是否为空     判定Path是否为空
     isRect     是否为矩形     判定Path是否是一个矩形
     
     set  替换路劲     用新的路劲替换当前路劲的所有内容
     reset,rewind     重置路劲     清除Path中的内容(reset相当于new Path , rewind 会保留Path的数据结构)
     
     offset 偏移路劲     对当前的路劲进行偏移
              public void offset(float dx, float dy)
              public void offset(float dx, float dy, Path dst)
              如果dx为正数则向右平移,反之向左平移;如果dy为正则向下平移,反之向上平移
              
     op     布尔操作     对两个Path进行布尔运算(交集,并集)等操作
     setFillType     填充模式     设置Path的填充模式
                  setFillType(Path.FillType ft)
                      FillType.WINDING     取path所有所在区域 默认值
                      FillType.EVEN_ODD     取path所在并不相交区域
                      FillType.INVERSE_WINDING     取path所有未占区域
                      FillType.INVERSE_EVEN_ODD     取path未占或相交区域
     getFillType     填充模式     获取Path的填充
     incReserve     提示方法     提示Path还有多少个点等待加入
     computeBounds     计算边界     计算Path的路劲
     
     quadTo     贝塞尔曲线     二次贝塞尔曲线的方法
            public void quadTo(float x1, float y1, float x2, float y2)
            (x1,y1) 为控制点,(x2,y2)为结束点。
           
     cubicTo 贝塞尔曲线     三次贝塞尔曲线的方法
            public void cubicTo(float x1, float y1, float x2, float y2, float x3, float y3)
            (x1,y1) 为控制点,(x2,y2)为控制点,(x3,y3) 为结束点。
0 0
原创粉丝点击