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); 

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