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绘图基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 甩全景
- 下一篇: android google 下拉刷新