- /**
- * Paint類介紹
- *
- * Paint即畫筆,在繪圖過程中起到了極其重要的作用,畫筆主要保存了顏色,
- * 樣式等繪製信息,指定了如何繪製文本和圖形,畫筆對象有很多設置方法,
- * 大體上可以分爲兩類,一類與圖形繪製相關,一類與文本繪製相關。
- *
- * 1.圖形繪製
- * setARGB(int a,int r,int g,int b);
- * 設置繪製的顏色,a代表透明度,r,g,b代表顏色值。
- *
- * setAlpha(int a);
- * 設置繪製圖形的透明度。
- *
- * setColor(int color);
- * 設置繪製的顏色,使用顏色值來表示,該顏色值包括透明度和RGB顏色。
- *
- * setAntiAlias(boolean aa);
- * 設置是否使用抗鋸齒功能,會消耗較大資源,繪製圖形速度會變慢。
- *
- * setDither(boolean dither);
- * 設定是否使用圖像抖動處理,會使繪製出來的圖片顏色更加平滑和飽滿,圖像更加清晰
- *
- * setFilterBitmap(boolean filter);
- * 如果該項設置爲true,則圖像在動畫進行中會濾掉對Bitmap圖像的優化操作,加快顯示
- * 速度,本設置項依賴於dither和xfermode的設置
- *
- * setMaskFilter(MaskFilter maskfilter);
- * 設置MaskFilter,可以用不同的MaskFilter實現濾鏡的效果,如濾化,立體等 *
- * setColorFilter(ColorFilter colorfilter);
- * 設置顏色過濾器,可以在繪製顏色時實現不用顏色的變換效果
- *
- * setPathEffect(PathEffect effect);
- * 設置繪製路徑的效果,如點畫線等
- *
- * setShader(Shader shader);
- * 設置圖像效果,使用Shader可以繪製出各種漸變效果
- *
- * setShadowLayer(float radius ,float dx,float dy,int color);
- * 在圖形下面設置陰影層,產生陰影效果,radius爲陰影的角度,dx和dy爲陰影在x軸和y軸上的距離,color爲陰影的顏色
- *
- * setStyle(Paint.Style style);
- * 設置畫筆的樣式,爲FILL,FILL_OR_STROKE,或STROKE
- *
- * setStrokeCap(Paint.Cap cap);
- * 當畫筆樣式爲STROKE或FILL_OR_STROKE時,設置筆刷的圖形樣式,如圓形樣式
- * Cap.ROUND,或方形樣式Cap.SQUARE
- *
- * setSrokeJoin(Paint.Join join);
- * 設置繪製時各圖形的結合方式,如平滑效果等
- *
- * setStrokeWidth(float width);
- * 當畫筆樣式爲STROKE或FILL_OR_STROKE時,設置筆刷的粗細度
- *
- * setXfermode(Xfermode xfermode);
- * 設置圖形重疊時的處理方式,如合併,取交集或並集,經常用來製作橡皮的擦除效果
- *
- * 2.文本繪製
- * setFakeBoldText(boolean fakeBoldText);
- * 模擬實現粗體文字,設置在小字體上效果會非常差
- *
- * setSubpixelText(boolean subpixelText);
- * 設置該項爲true,將有助於文本在LCD屏幕上的顯示效果
- *
- * setTextAlign(Paint.Align align);
- * 設置繪製文字的對齊方向
- *
- * setTextScaleX(float scaleX);
- * 設置繪製文字x軸的縮放比例,可以實現文字的拉伸的效果
- *
- * setTextSize(float textSize);
- * 設置繪製文字的字號大小
- *
- * setTextSkewX(float skewX);
- * 設置斜體文字,skewX爲傾斜弧度
- *
- * setTypeface(Typeface typeface);
- * 設置Typeface對象,即字體風格,包括粗體,斜體以及襯線體,非襯線體等
- *
- * setUnderlineText(boolean underlineText);
- * 設置帶有下劃線的文字效果
- *
- * setStrikeThruText(boolean strikeThruText);
- * 設置帶有刪除線的效果
- *
- */
- canvas.drawColor(Color.WHITE);
- Paint paint = new Paint();
- /* 去鋸齒 */
- paint.setAntiAlias(true);
- /* 設置paint的顏色 */
- paint.setColor(Color.RED);
- /* 設置paint的 style 爲STROKE:空心 */
- paint.setStyle(Paint.Style.STROKE);
- /* 設置paint的外框寬度 */
- paint.setStrokeWidth(3);
- /* 畫一個空心圓形 */
- canvas.drawCircle(40, 40, 30, paint);
- /* 畫一個空心正方形 */
- canvas.drawRect(10, 90, 70, 150, paint);
- /* 畫一個空心長方形 */
- canvas.drawRect(10, 170, 70, 200, paint);
- /* 畫一個空心橢圓形 */
- RectF re = new RectF(10, 220, 70, 250);
- canvas.drawOval(re, paint);
- /* 畫一個空心三角形 */
- Path path = new Path();
- path.moveTo(10, 330);
- path.lineTo(70, 330);
- path.lineTo(40, 270);
- path.close();//記得要close
- canvas.drawPath(path, paint);
- /* 畫一個空心梯形 */
- Path path1 = new Path();
- path1.moveTo(10, 410);
- path1.lineTo(70, 410);
- path1.lineTo(55, 350);
- path1.lineTo(25, 350);
- path1.close();
- canvas.drawPath(path1, paint);
- /* 設置paint 的style爲 FILL:實心 */
- paint.setStyle(Paint.Style.FILL);
- /* 設置paint的顏色 */
- paint.setColor(Color.BLUE);
- /* 畫一個實心圓 */
- canvas.drawCircle(120, 40, 30, paint);
- /* 畫一個實心正方形 */
- canvas.drawRect(90, 90, 150, 150, paint);
- /* 畫一個實心長方形 */
- canvas.drawRect(90, 170, 150, 200, paint);
- /* 畫一個實心橢圓 */
- RectF re2 = new RectF(90, 220, 150, 250);
- canvas.drawOval(re2, paint);
- /* 畫一個實心三角形 */
- Path path2 = new Path();
- path2.moveTo(90, 330);
- path2.lineTo(150, 330);
- path2.lineTo(120, 270);
- path2.close();
- canvas.drawPath(path2, paint);
- /* 畫一個實心梯形 */
- Path path3 = new Path();
- path3.moveTo(90, 410);
- path3.lineTo(150, 410);
- path3.lineTo(135, 350);
- path3.lineTo(105, 350);
- path3.close();
- canvas.drawPath(path3, paint);
- /* 設置漸變色 */
- Shader mShader = new LinearGradient(0, 0, 100, 100, new int[] {
- Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW }, null,
- Shader.TileMode.REPEAT);
- paint.setShader(mShader);
- /* 畫一個漸變色圓 */
- canvas.drawCircle(200, 40, 30, paint);
- /* 畫一個漸變色正方形 */
- canvas.drawRect(170, 90, 230, 150, paint);
- /* 畫一個漸變色長方形 */
- canvas.drawRect(170, 170, 230, 200, paint);
- /* 畫一個漸變色橢圓 */
- RectF re3 = new RectF(170, 220, 230, 250);
- canvas.drawOval(re3, paint);
- /* 畫一個漸變色三角形 */
- Path path4 = new Path();
- path4.moveTo(170, 330);
- path4.lineTo(230, 330);
- path4.lineTo(200, 270);
- path4.close();
- canvas.drawPath(path4, paint);
- /* 畫一個漸變色梯形 */
- Path path5 = new Path();
- path5.moveTo(170, 410);
- path5.lineTo(230, 410);
- path5.lineTo(215, 350);
- path5.lineTo(185, 350);
- path5.close();
- canvas.drawPath(path5, paint);
- /* 寫字 */
- paint.setTextSize(24);
- canvas.drawText(getResources().getString(R.string.str_text1), 240, 50,paint);
- canvas.drawText(getResources().getString(R.string.str_text2), 240, 120,paint);
- canvas.drawText(getResources().getString(R.string.str_text3), 240, 190,paint);
- canvas.drawText(getResources().getString(R.string.str_text4), 240, 250,paint);
- canvas.drawText(getResources().getString(R.string.str_text5), 240, 320,paint);
- canvas.drawText(getResources().getString(R.string.str_text6), 240, 390,paint);