日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 默认站点!

默认站点

當前位置: 首頁 >

android 绘画,Android绘图基础

發布時間:2023/11/27 32 豆豆
默认站点 收集整理的這篇文章主要介紹了 android 绘画,Android绘图基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

繪圖三要素

一支畫筆 Paint。

一張畫布 Canvas。

一個 Bitmap 或者一個 View 來承載這個圖形。

Paint常用屬性

setAntiAlias() 設置畫筆鋸齒效果。

setColor() 設置畫筆顏色。

setTextSize() 設置字體尺寸。

setStrokeWidth() 設置空心邊框的寬度。

setStyle() 設置畫筆的風格。

Canvas常用draw方法

drawPoint() 畫點。

drawLine() 畫線。

drawRect() 畫矩形。

drawRoundRext() 畫圓角矩形。

drawArc() 畫弧形.扇形。

drawOval() 畫橢圓。

drawPath() 畫路徑。

drawText() 畫文本。

說明

對于drawRect(left,tob,rigth,bottom,paint)接收的四個參數,當Paint.Style為Fill的時候,是指該矩形各條邊到畫布坐標軸的距離(一般是畫布的左頂點水平方向為X軸,垂直方向為Y軸,Y軸向下為正)。當Paint.Style為Stroke的時候,是指該矩形邊框各條邊的中心的到畫布坐標軸的距離。

drawPath()方法繪制的是路徑。比如我要繪制一個三角形,并顯示在ImageView上:

Bitmap bm = Bitmap.createBitmap(1000,1000, Bitmap.Config.ARGB_8888);

canvas = new Canvas(bm);

paint = new Paint();

paint.setColor(Color.RED);

paint.setStyle(Paint.Style.STROKE); //必須設置,否則默認為Fill,會填充。

paint.setStrokeWidth(3.0f);

Path path = new Path();

path.moveTo(100,100);

path.lineTo(500,300);

path.lineTo(300,600);

path.close(); // 閉合曲線。

canvas.drawPath(path,paint);

imageView.setImageBitmap(bm);

其中moveTo(),方法是把起始點移動到指定位置。lineTo()是從起始點畫一條道指定點的直線。更多關于Path的知識,請參考android繪圖之Path總結。

drawArc(),drawArc(left,top,righ,bottom,startAngle,sweepAngle,useCenter,paint)是先按照給定的上下左右的距離確定一個矩形(長寬不一定要相等),然后把這個矩形的上邊為旋轉到startAngel角度,把矩形的左邊旋轉到和上邊所成的夾角為sweepAngle角度,然后用弧線連接這兩條邊的端點。其中和X軸平行的方向為0度,正數表示順時針旋轉。當useCenter為true時,會顯示左右兩條邊,為false時,只顯示一段弧線。如繪制了一個扇形:

canvas.drawArc(100,100,300,300,30,60,true,paint);

Canvas的其他方法

Canvas.sava()

Canvas.restore()

Canvas.translate()

Canvas.rotate()

Canvas.scale()

Canvas.saveLayer()

Canvas.saveLayerAlpha()

Canvas.restoreToCount()

Canvas.clipPath()

說明

Canvas.sava()是把之前在畫布上的操作保存起來,使之后的操作在另外一個圖層上。Canvas.restore()則是把圖層合并起來。通常我們可以先調用Canvas.sava()啟用一個新的圖層,然后我們可以通過Canvas.translate()或Canvas.rotate()移動或旋轉這個新圖層,這時的坐標都是以這個新的圖層為基準,此時能大大簡化我們的坐標計算。完成繪制之后,再調用Canvas.restore()就可以了。

Canvas.saveLayer()。 public int saveLayer(RectF bounds,Paint paint,int saveFlags),可以看到這個方法可以接受一個bounds參數。和save()方法不同的地方是,save()方法不能改變新圖層的形狀,而saveLayer()方法不僅可以創建一個或多個不同形狀的圖層,還可以指定合并圖層的樣式。saveLayerAlpha()則是開啟一個帶透明度的圖層。

Canvas.clipPath()支持通過路徑來剪貼一塊區域。通常我們可用此方法剪貼一個區域,然后調用該Drawable的draw(canvas),來繪制一個圖形。如下代碼繪制了一個圓形的圖片。

Drawable drawable = getResources().getDrawable(R.drawable.image,null);

// 必須調用setBounds方法,因為系統要確定該Drawable的大小。

drawable.setBounds(0,0,1000,1000);

Path path = new Path();

path.addCircle(500,500,500,Path.Direction.CW);

canvas.clipPath(path);

drawable.draw(canvas);

imageView.setImageBitmap(bm);

注意

必須調用setBounds()。設置的bounds想當于設定了該Drawable各條邊距離畫布坐標軸的距離。

總結

以上是默认站点為你收集整理的android 绘画,Android绘图基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得默认站点網站內容還不錯,歡迎將默认站点推薦給好友。