androidcanvas绘图详解Word格式.docx
《androidcanvas绘图详解Word格式.docx》由会员分享,可在线阅读,更多相关《androidcanvas绘图详解Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
Bitmapb=(100,100,
Canvasc=newCanvas(b);
上面代码创建了一个尺寸是100*100的Bitmap,使用它作为Canvas操作的对象,这时候的Canvas就是使用创建的方式。
当你使用创建的Canvas在bitmap上执行绘制方法后,你还可以将绘制的结果提交给另外一个Canvas,这样就可以达到两个Canvas协作完成的效果,简化逻辑。
但是androidSDK建议使用参数里提供的Canvas就好,没必要自己创建一个新的Canvas对象。
接下来我们看看Canvas提供我们哪些绘制图形的方法。
我们创建一个自定义View对象,使用onDraw方法提供的Canvas进行绘制图形。
:
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package
import
publicclassCanvasDemoActivityextendsActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
(savedInstanceState);
setContentView(newCustomView1(this));
}
/**
*使用内部类自定义一个简单的View
*@authorAdministrator
*
*/
classCustomView1extendsView{
Paintpaint;
publicCustomView1(Contextcontext){
super(context);
paint=newPaint();
..
40,40,
50,50,
60,60,
70,70,
80,80,
90,90,
100,100
},paint);
}
@Override
protectedvoidonDraw(Canvascanvas){
RectFrect=newRectF(50,50,200,200);
(rect,paint);
protectedvoidonDraw(Canvascanvas){
(rect,
30,//x轴的半径
30,//y轴的半径
paint);
Pathpath=newPath();
//定义一条路径
(10,10);
//移动到坐标10,10
(50,60);
(200,80);
(path,paint);
//(path,paint);
("
Android777开发者博客"
path,10,10,paint);
}
位置转换方法,和:
(true);
;
()/2,200);
//将位置移动画纸的坐标点:
150,150
(0,0,100,paint);
//画圆圈
//使用path绘制路径文字
();
(-75,-75);
(newRectF(0,0,150,150),-180,180);
PaintcitePaint=newPaint(paint);
(14);
(1);
"
path,28,0,citePaint);
PainttmpPaint=newPaint(paint);
//小刻度画笔对象
floaty=100;
intcount=60;
//总刻度数
for(inti=0;
i<
count;
i++){
if(i%5==0){
(0f,y,0,y+12f,paint);
(i/5+1),-4f,y+25f,tmpPaint);
}else{
(0f,y,0f,y+5f,tmpPaint);
(360/count,0f,0f);
//旋转画纸
//绘制指针
(4);
(0,0,7,tmpPaint);
(0,0,5,tmpPaint);
(0,10,0,-65,paint);
上面几个例子基本已经将常用的*方法测试过了,我们结合一些事件,做一些有用户交互的应用:
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
privateArrayList<
PointF>
graphics=newArrayList<
();
PointFpoint;
//设置一个笔刷大小是3的黄色的画笔
(3);
publicbooleanonTouchEvent(MotionEventevent){
(newPointF(),()));
invalidate();
//重新绘制区域
returntrue;
//在这里我们将测试canvas提供的绘制图形方法
for(PointFpoint:
graphics){
,paint);
//(canvas);
当用户点击时将出现一个小点,拖动时将画出一条用细点组成的虚线: