Paint类介绍

  1. /**   
  2.      * Paint类介绍   
  3.      *    
  4.      * Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了颜色,   
  5.      * 样式等绘制信息,指定了如何绘制文本和图形,画笔对象有很多设置方法,   
  6.      * 大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关。          
  7.      *    
  8.      * 1.图形绘制   
  9.      * setARGB(int a,int r,int g,int b);   
  10.      * 设置绘制的颜色,a代表透明度,r,g,b代表颜色值。   
  11.      *    
  12.      * setAlpha(int a);   
  13.      * 设置绘制图形的透明度。   
  14.      *    
  15.      * setColor(int color);   
  16.      * 设置绘制的颜色,使用颜色值来表示,该颜色值包括透明度和RGB颜色。   
  17.      *    
  18.     * setAntiAlias(boolean aa);   
  19.      * 设置是否使用抗锯齿功能,会消耗较大资源,绘制图形速度会变慢。   
  20.      *    
  21.      * setDither(boolean dither);   
  22.      * 设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰   
  23.      *    
  24.      * setFilterBitmap(boolean filter);   
  25.      * 如果该项设置为true,则图像在动画进行中会滤掉对Bitmap图像的优化操作,加快显示   
  26.      * 速度,本设置项依赖于dither和xfermode的设置   
  27.      *    
  28.      * setMaskFilter(MaskFilter maskfilter);   
  29.      * 设置MaskFilter,可以用不同的MaskFilter实现滤镜的效果,如滤化,立体等       *    
  30.      * setColorFilter(ColorFilter colorfilter);   
  31.      * 设置颜色过滤器,可以在绘制颜色时实现不用颜色的变换效果   
  32.      *    
  33.      * setPathEffect(PathEffect effect);   
  34.      * 设置绘制路径的效果,如点画线等   
  35.      *    
  36.      * setShader(Shader shader);   
  37.      * 设置图像效果,使用Shader可以绘制出各种渐变效果   
  38.      *   
  39.      * setShadowLayer(float radius ,float dx,float dy,int color);   
  40.      * 在图形下面设置阴影层,产生阴影效果,radius为阴影的角度,dx和dy为阴影在x轴和y轴上的距离,color为阴影的颜色   
  41.      *    
  42.      * setStyle(Paint.Style style);   
  43.      * 设置画笔的样式,为FILL,FILL_OR_STROKE,或STROKE   
  44.      *    
  45.      * setStrokeCap(Paint.Cap cap);   
  46.      * 当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的图形样式,如圆形样式   
  47.      * Cap.ROUND,或方形样式Cap.SQUARE   
  48.      *    
  49.      * setSrokeJoin(Paint.Join join);   
  50.      * 设置绘制时各图形的结合方式,如平滑效果等   
  51.      *    
  52.      * setStrokeWidth(float width);   
  53.      * 当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的粗细度   
  54.      *    
  55.      * setXfermode(Xfermode xfermode);   
  56.      * 设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果   
  57.      *    
  58.      * 2.文本绘制   
  59.      * setFakeBoldText(boolean fakeBoldText);   
  60.      * 模拟实现粗体文字,设置在小字体上效果会非常差   
  61.      *    
  62.      * setSubpixelText(boolean subpixelText);   
  63.      * 设置该项为true,将有助于文本在LCD屏幕上的显示效果   
  64.      *    
  65.      * setTextAlign(Paint.Align align);   
  66.      * 设置绘制文字的对齐方向   
  67.      *    
  68.    * setTextScaleX(float scaleX);   
  69.     * 设置绘制文字x轴的缩放比例,可以实现文字的拉伸的效果   
  70.      *    
  71.      * setTextSize(float textSize);   
  72.      * 设置绘制文字的字号大小   
  73.      *    
  74.      * setTextSkewX(float skewX);   
  75.      * 设置斜体文字,skewX为倾斜弧度   
  76.      *    
  77.      * setTypeface(Typeface typeface);   
  78.      * 设置Typeface对象,即字体风格,包括粗体,斜体以及衬线体,非衬线体等   
  79.      *    
  80.      * setUnderlineText(boolean underlineText);   
  81.      * 设置带有下划线的文字效果   
  82.      *    
  83.      * setStrikeThruText(boolean strikeThruText);   
  84.      * 设置带有删除线的效果   
  85.      *    
  86.      */    
  1. canvas.drawColor(Color.WHITE);  
  2.         Paint paint = new Paint();  
  3.         /* 去锯齿 */  
  4.         paint.setAntiAlias(true);  
  5.         /* 设置paint的颜色 */  
  6.         paint.setColor(Color.RED);  
  7.         /* 设置paint的 style 为STROKE:空心 */  
  8.         paint.setStyle(Paint.Style.STROKE);  
  9.         /* 设置paint的外框宽度 */  
  10.         paint.setStrokeWidth(3);  
  11.         /* 画一个空心圆形 */  
  12.         canvas.drawCircle(404030, paint);  
  13.         /* 画一个空心正方形 */  
  14.         canvas.drawRect(109070150, paint);  
  15.         /* 画一个空心长方形 */  
  16.         canvas.drawRect(1017070200, paint);  
  17.         /* 画一个空心椭圆形 */  
  18.         RectF re = new RectF(1022070250);  
  19.         canvas.drawOval(re, paint);  
  20.         /* 画一个空心三角形 */  
  21.         Path path = new Path();  
  22.         path.moveTo(10330);  
  23.         path.lineTo(70330);  
  24.         path.lineTo(40270);  
  25.         path.close();//记得要close  
  26.         canvas.drawPath(path, paint);  
  27.         /* 画一个空心梯形 */  
  28.         Path path1 = new Path();  
  29.         path1.moveTo(10410);  
  30.         path1.lineTo(70410);  
  31.         path1.lineTo(55350);  
  32.         path1.lineTo(25350);  
  33.         path1.close();  
  34.         canvas.drawPath(path1, paint);  
  35.   
  36.         /* 设置paint 的style为 FILL:实心 */  
  37.         paint.setStyle(Paint.Style.FILL);  
  38.         /* 设置paint的颜色 */  
  39.         paint.setColor(Color.BLUE);  
  40.         /* 画一个实心圆 */  
  41.         canvas.drawCircle(1204030, paint);  
  42.         /* 画一个实心正方形 */  
  43.         canvas.drawRect(9090150150, paint);  
  44.         /* 画一个实心长方形 */  
  45.         canvas.drawRect(90170150200, paint);  
  46.         /* 画一个实心椭圆 */  
  47.         RectF re2 = new RectF(90220150250);  
  48.         canvas.drawOval(re2, paint);  
  49.         /* 画一个实心三角形 */  
  50.         Path path2 = new Path();  
  51.         path2.moveTo(90330);  
  52.         path2.lineTo(150330);  
  53.         path2.lineTo(120270);  
  54.         path2.close();  
  55.         canvas.drawPath(path2, paint);  
  56.         /* 画一个实心梯形 */  
  57.         Path path3 = new Path();  
  58.         path3.moveTo(90410);  
  59.         path3.lineTo(150410);  
  60.         path3.lineTo(135350);  
  61.         path3.lineTo(105350);  
  62.         path3.close();  
  63.         canvas.drawPath(path3, paint);  
  64.         /* 设置渐变色 */  
  65.         Shader mShader = new LinearGradient(00100100new int[] {  
  66.                 Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW }, null,  
  67.                 Shader.TileMode.REPEAT);  
  68.         paint.setShader(mShader);  
  69.   
  70.         /* 画一个渐变色圆 */  
  71.         canvas.drawCircle(2004030, paint);  
  72.         /* 画一个渐变色正方形 */  
  73.         canvas.drawRect(17090230150, paint);  
  74.         /* 画一个渐变色长方形 */  
  75.         canvas.drawRect(170170230200, paint);  
  76.         /* 画一个渐变色椭圆 */  
  77.         RectF re3 = new RectF(170220230250);  
  78.         canvas.drawOval(re3, paint);  
  79.         /* 画一个渐变色三角形 */  
  80.         Path path4 = new Path();  
  81.         path4.moveTo(170330);  
  82.         path4.lineTo(230330);  
  83.         path4.lineTo(200270);  
  84.         path4.close();  
  85.         canvas.drawPath(path4, paint);  
  86.         /* 画一个渐变色梯形 */  
  87.         Path path5 = new Path();  
  88.         path5.moveTo(170410);  
  89.         path5.lineTo(230410);  
  90.         path5.lineTo(215350);  
  91.         path5.lineTo(185350);  
  92.         path5.close();  
  93.         canvas.drawPath(path5, paint);  
  94.   
  95.         /* 写字 */  
  96.         paint.setTextSize(24);  
  97.         canvas.drawText(getResources().getString(R.string.str_text1), 24050,paint);  
  98.         canvas.drawText(getResources().getString(R.string.str_text2), 240120,paint);  
  99.         canvas.drawText(getResources().getString(R.string.str_text3), 240190,paint);  
  100.         canvas.drawText(getResources().getString(R.string.str_text4), 240250,paint);  
  101.         canvas.drawText(getResources().getString(R.string.str_text5), 240320,paint);  
  102.         canvas.drawText(getResources().getString(R.string.str_text6), 240390,paint); 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章