【Android开发】图形图像处理技术-绘制几何图形
生活随笔
收集整理的這篇文章主要介紹了
【Android开发】图形图像处理技术-绘制几何图形
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
常見的幾何圖形包括點、線、弧、矩形等。在Android中,Canvas類提供了豐富的繪制幾何圖形的方法,通過這些方法,可以繪制出各種幾何圖形。常用的幾何圖形的繪制方法如下所示:
1. 畫一個圓使用的是drawCircle:canvas.drawCircle(cx, cy, radius, paint);x、y代表坐標、radius是半徑、paint是畫筆,就是畫圖的顏色;
2. 在畫圖的時候還要有注意,你所畫的矩形是實心(paint.setStyle(Paint.Style.FILL))還是空心(paint.setStyle(Paint.Style.STROKE);
畫圖的時候還有一點,那就是消除鋸齒:paint.setAntiAlias(true);
3. 還有就是設置一種漸變顏色的矩形:
? ? ?Shader mShader = new LinearGradient(0,0,100,100, new int[]{Color.RED,Color.GREEn,Color.BLUE,Color.YELLO},null,Shader.TileMode.REPEAT);
ShapeDrawable sd;
//畫一個實心正方形
sd = new ShapeDrawable(new RectShape());
sd.setBounds(20,20,100,100);
sd.draw(canvas);
//一個漸變色的正方形就完成了
4. 正方形:drawRect:canvas.drawRect(left, top, right, bottom, paint)
這里的left、top、right、bottom的值是:
left:是矩形距離左邊的X軸
top:是矩形距離上邊的Y軸
right:是矩形距離右邊的X軸
bottom:是矩形距離下邊的Y軸
5. 長方形:他和正方形是一個原理,這個就不用說了
6. 圓角矩形:drawRoundRect(RectF rect,float rx,float ry,Paint paint);
例子:RectF ?rectf=new RectF(40,20,80,40);?
canvas.drawRonudRect(rectf,6,6,paint);
7. 橢圓形:記住,這里的Rectf是float類型的
RectF re = new Rect(left, top, right, bottom);
canvas.drawOval(re,paint);
8.繪制一條線:drawLine(float startX,float startY,float stopX,float stopY, paint);
9.繪制多條線:drawLine(float[] pts,Paint paint);
例子:(繪制出了一個三角形)
drawLine(new float[]{10,10,30,10,30,10,15,30,15,30,10,10},paint);
10.繪制一個點:drawPoints(float x,float y,Paint paint)
設置Paint畫筆的例子:
Paint paint=new Paint();//創建一個采用默認設置的畫筆 paint.setAntiAlias(true);//使用抗鋸齒的功能 paint.setColor(Color.RED);//設置顏色為紅色 paint.setStrokeWidth(2);//筆觸的寬度為2像素 paint.setStyle(Style.STROKE);//填充樣式為描邊(實心是Style.FILL)
下面用一個實例來應用Canvas的繪制功能,繪制一個由5種不同顏色的圓形組成圖案
用來顯示自定義的繪圖類的布局文件
res/layout/main.xml:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="fill_parent"android:layout_height="fill_parent"android:id="@+id/frameLayout1"android:orientation="vertical"></FrameLayout>
打開MainActivity,在文件中創建名為MyView的內部類,繼承android.view.View類,并添加構造方法和重寫onDraw(Canvas canvas)方法,在里面進行作圖:
MainActivity:
package com.example.test; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.os.Bundle; import android.view.View; import android.widget.FrameLayout;public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //獲取布局文件中添加的幀布局管理器FrameLayout ll=(FrameLayout)findViewById(R.id.frameLayout1);//將自定義的MyView視圖添加到幀布局ll.addView(new MyView(this));} public class MyView extends View{public MyView(Context context) {super(context);// TODO Auto-generated constructor stub}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawColor(Color.WHITE);//指定畫布的背景顏色為白色Paint paint=new Paint();//創建采用默認的畫筆paint.setAntiAlias(true);//使用抗鋸齒功能paint.setStrokeWidth(3);//設置筆觸的寬度paint.setStyle(Style.STROKE);//設置填充樣式為描邊paint.setColor(Color.BLUE);//設置畫筆顏色canvas.drawCircle(50, 50, 30, paint);//繪制藍色的圓形paint.setColor(Color.YELLOW);//設置畫筆顏色canvas.drawCircle(100, 50, 30, paint);//繪制黃色的圓形paint.setColor(Color.BLACK);//設置畫筆顏色canvas.drawCircle(150, 50, 30, paint);//繪制黑色的圓形paint.setColor(Color.GREEN);//設置畫筆顏色canvas.drawCircle(75, 90, 30, paint);//繪制綠色的圓形paint.setColor(Color.RED);//設置畫筆顏色canvas.drawCircle(125, 90, 30, paint);//繪制紅色的圓形super.onDraw(canvas);}} }
1. 畫一個圓使用的是drawCircle:canvas.drawCircle(cx, cy, radius, paint);x、y代表坐標、radius是半徑、paint是畫筆,就是畫圖的顏色;
2. 在畫圖的時候還要有注意,你所畫的矩形是實心(paint.setStyle(Paint.Style.FILL))還是空心(paint.setStyle(Paint.Style.STROKE);
畫圖的時候還有一點,那就是消除鋸齒:paint.setAntiAlias(true);
3. 還有就是設置一種漸變顏色的矩形:
? ? ?Shader mShader = new LinearGradient(0,0,100,100, new int[]{Color.RED,Color.GREEn,Color.BLUE,Color.YELLO},null,Shader.TileMode.REPEAT);
ShapeDrawable sd;
//畫一個實心正方形
sd = new ShapeDrawable(new RectShape());
sd.setBounds(20,20,100,100);
sd.draw(canvas);
//一個漸變色的正方形就完成了
4. 正方形:drawRect:canvas.drawRect(left, top, right, bottom, paint)
這里的left、top、right、bottom的值是:
left:是矩形距離左邊的X軸
top:是矩形距離上邊的Y軸
right:是矩形距離右邊的X軸
bottom:是矩形距離下邊的Y軸
5. 長方形:他和正方形是一個原理,這個就不用說了
6. 圓角矩形:drawRoundRect(RectF rect,float rx,float ry,Paint paint);
例子:RectF ?rectf=new RectF(40,20,80,40);?
canvas.drawRonudRect(rectf,6,6,paint);
7. 橢圓形:記住,這里的Rectf是float類型的
RectF re = new Rect(left, top, right, bottom);
canvas.drawOval(re,paint);
8.繪制一條線:drawLine(float startX,float startY,float stopX,float stopY, paint);
9.繪制多條線:drawLine(float[] pts,Paint paint);
例子:(繪制出了一個三角形)
drawLine(new float[]{10,10,30,10,30,10,15,30,15,30,10,10},paint);
10.繪制一個點:drawPoints(float x,float y,Paint paint)
設置Paint畫筆的例子:
Paint paint=new Paint();//創建一個采用默認設置的畫筆 paint.setAntiAlias(true);//使用抗鋸齒的功能 paint.setColor(Color.RED);//設置顏色為紅色 paint.setStrokeWidth(2);//筆觸的寬度為2像素 paint.setStyle(Style.STROKE);//填充樣式為描邊(實心是Style.FILL)
下面用一個實例來應用Canvas的繪制功能,繪制一個由5種不同顏色的圓形組成圖案
用來顯示自定義的繪圖類的布局文件
res/layout/main.xml:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="fill_parent"android:layout_height="fill_parent"android:id="@+id/frameLayout1"android:orientation="vertical"></FrameLayout>
打開MainActivity,在文件中創建名為MyView的內部類,繼承android.view.View類,并添加構造方法和重寫onDraw(Canvas canvas)方法,在里面進行作圖:
MainActivity:
package com.example.test; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.os.Bundle; import android.view.View; import android.widget.FrameLayout;public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //獲取布局文件中添加的幀布局管理器FrameLayout ll=(FrameLayout)findViewById(R.id.frameLayout1);//將自定義的MyView視圖添加到幀布局ll.addView(new MyView(this));} public class MyView extends View{public MyView(Context context) {super(context);// TODO Auto-generated constructor stub}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawColor(Color.WHITE);//指定畫布的背景顏色為白色Paint paint=new Paint();//創建采用默認的畫筆paint.setAntiAlias(true);//使用抗鋸齒功能paint.setStrokeWidth(3);//設置筆觸的寬度paint.setStyle(Style.STROKE);//設置填充樣式為描邊paint.setColor(Color.BLUE);//設置畫筆顏色canvas.drawCircle(50, 50, 30, paint);//繪制藍色的圓形paint.setColor(Color.YELLOW);//設置畫筆顏色canvas.drawCircle(100, 50, 30, paint);//繪制黃色的圓形paint.setColor(Color.BLACK);//設置畫筆顏色canvas.drawCircle(150, 50, 30, paint);//繪制黑色的圓形paint.setColor(Color.GREEN);//設置畫筆顏色canvas.drawCircle(75, 90, 30, paint);//繪制綠色的圓形paint.setColor(Color.RED);//設置畫筆顏色canvas.drawCircle(125, 90, 30, paint);//繪制紅色的圓形super.onDraw(canvas);}} }
效果如圖
轉載請注明出處:http://blog.csdn.net/acmman/article/details/45177289
總結
以上是生活随笔為你收集整理的【Android开发】图形图像处理技术-绘制几何图形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js调用QQ进程的方法总结
- 下一篇: [HDF]hdf-4.2.6类库的使用