Android绘图操作onDraw

1)paint(Graphics g)绘制组件外观,程序会自动的调用paint()方法来绘制组件,1)paint(Graphics g)绘制组件外观,程序会自动的调用paint()方法来绘制组件,2、向容器中添加组件时,然后将该组件添加到容器中,Paint paint = new Paint(),然后在用Graphics在上面绘制自己想要图案

图片 4

Java绘图本领基础,java绘图技艺

 1 public class Demo1 extends JFrame{
 2     MyPanel mp=null;
 3     
 4     public static void main(String[] args){
 5         Demo1 demo=new Demo1();
 6     }
 7     
 8     public Demo1(){
 9         mp=new MyPanel();
10         this.add(mp);
11         this.setSize(400,300);
12         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
13         this.setVisible(true);
14     }
15 }
16 //定义一个MyPanel(我自己的面板,是用于绘图和显示绘图的区域)
17 class MyPanel extends JPanel{
18     //覆盖JPanel的paint方法
19     public void paint(Graphics g){        //Graphics是绘图的重要类,可以理解成一只画笔
20         //1、调用父类函数完成初始化(不可少)
21         super.paint(g);
22 //        System.out.println("paint被调用");
23         g.drawOval(10, 10, 30, 30);          //先画出一个圆
24         g.drawLine(10, 10,40, 40);        // 画直线
25         g.drawRect(10, 10, 40, 60);       //画矩形边框
26         
27         g.setColor(Color.BLUE);            //设置颜色
28         g.fillRect(70, 70, 40, 60);       //填充矩形
29         
30         g.setColor(Color.gray);
31         g.fillRect(150, 150, 30,40);
32         
33         //在面板上画出图片
34         Image im=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/imag_1"));
35         g.drawImage(im, 200, 200, 200, 150, this);  //显示
36         //画出字体
37         g.setColor(Color.GREEN);
38         g.setFont(new Font("隶书",Font.BOLD,30));
39         g.drawString("祖国万岁!", 100, 80);
40         
41     }
42 }

1、Component类提供了七个和制图相关最关键的议程

1)paint(Graphics g)绘制组件外观

2)repaint()刷新组件的外观

当组件第三回在显示屏显示时,程序会活动的调用paint()方法来绘制组件。

2、关于Graphics类

图片 1

运维效果如下:

图片 2

1 public class
Demo1 extends JFrame{ 2 MyPanel mp= null ; 3 4 public static void
main(String[] args){ 5 Demo1 demo= new Demo1(); 6 } 7 8 p…

 1 public class Demo1 extends JFrame{
 2     MyPanel mp=null;
 3     
 4     public static void main(String[] args){
 5         Demo1 demo=new Demo1();
 6     }
 7     
 8     public Demo1(){
 9         mp=new MyPanel();
10         this.add(mp);
11         this.setSize(400,300);
12         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
13         this.setVisible(true);
14     }
15 }
16 //定义一个MyPanel(我自己的面板,是用于绘图和显示绘图的区域)
17 class MyPanel extends JPanel{
18     //覆盖JPanel的paint方法
19     public void paint(Graphics g){        //Graphics是绘图的重要类,可以理解成一只画笔
20         //1、调用父类函数完成初始化(不可少)
21         super.paint(g);
22 //        System.out.println("paint被调用");
23         g.drawOval(10, 10, 30, 30);          //先画出一个圆
24         g.drawLine(10, 10,40, 40);        // 画直线
25         g.drawRect(10, 10, 40, 60);       //画矩形边框
26         
27         g.setColor(Color.BLUE);            //设置颜色
28         g.fillRect(70, 70, 40, 60);       //填充矩形
29         
30         g.setColor(Color.gray);
31         g.fillRect(150, 150, 30,40);
32         
33         //在面板上画出图片
34         Image im=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/imag_1"));
35         g.drawImage(im, 200, 200, 200, 150, this);  //显示
36         //画出字体
37         g.setColor(Color.GREEN);
38         g.setFont(new Font("隶书",Font.BOLD,30));
39         g.drawString("祖国万岁!", 100, 80);
40         
41     }
42 }

仿效文献:《Java疯狂讲义》(第三版)

做java的都知晓,绘图料定首先须求七个Canvas,然后在用Graphics在地方绘制自个儿想要图案。不错,Android上边也接近,你能够从二个Bitmap获得它的Canvas,实行绘图,也足以自定义四个View,用它的
Canvas。分歧的时,Android里没有Graphics,而用
Paint代之,当然用法也稍有两样。以下是自定义View的一段代码: 
@Override 
public void onDraw(Canvas canvas) { 
// 首先定义三个paint 
Paint paint = new Paint(); 
// 绘制矩形区域-实心矩形 
// 设置颜色 
paint.setColor(Color.WHITE); 
// 设置样式-填充 
paint.setStyle(Style.FILL); 
// 绘制贰个矩形 
canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint); 
// 绘空心矩形 
// 设置颜色 
paint.setColor(Color.RED); 
// 设置样式-空心矩形 
paint.setStyle(Style.STROKE); 
// 绘制多个矩形 
canvas.drawRect(new Rect(10, 10, 50, 20), paint); 
// 绘文字 
// 设置颜色 
paint.setColor(Color.GREEN); 
// 绘文字 
canvas.drawText(str, 30, 30, paint); 
// 绘图 
// 从能源文件中生成位图 
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.icon); 
// 绘图 
canvas.drawBitmap(bitmap, 10, 10, paint); 

上述亟待留心的有三点: 
1、Android中的Rect和java中的只怕稍有分别,前五个参数是左上角的坐标,后多个参数是右下角的坐标(不是大幅和可观); 
2、Style.STROKE和Style.FILL外边的像素数是有分别的,那一点和java里平等; 
3、绘文字时,设置的坐标点为(30,30),但绘出来后你会意识,文字的左上角坐标要比你设置的偏上,不知情是android设置的bug,依然大家有知情到坐标点的含义。

1、Component类提供了七个和制图相关最珍视的措施

相对定位

Android绘图操作onDraw |
自由库 

1)paint(Graphics g)绘制组件外观

相对定位步骤:

2)repaint()刷新组件的外观

1、Container的布局管理器设成null:setLayout(null)

当组件第二回在荧屏突显时,程序会自动的调用paint()方法来绘制组件。

2、向容器中增加组件时,先调用setBounds()或setSize()方法来设置组件的轻重,地方,也许直接创立GUI组件时通过结构参数钦赐该零件的大小、地点,然后将该器件增多到容器中。

2、关于Graphics类

绝对定位时以至能够使五个开关重叠,可见使用绝对化定位确实特别灵活,并且很爽直,但这种方法是以丧失跨平台湾特务性作为代价的。

图片 3

import java.awt.*;

运作效果如下:

import java.applet.Applet;

图片 4

public class GridLayoutTest{

public static void main(String[] args){

Frame f=new Frame(“计算器”);

Panel p1=new Panel();

p1.add(new TextField(30));

f.add(p1,”North”);

Panel p2=new Panel();

//设置Panel使用GridLayout布局管理器

String[] name={“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9”};

for(int i=0;i

p2.add(new Button(name[i]));

}

f.add(p2);

f.pack();

f.setVisible(true);

}

}

BoxLayout布局管理器

GridBagLayout布局管理器即便功用庞大,但它实在太复杂了,所以Swing引入了贰个新的布局管理器:BoxLayout,它保留了GridBagLayout的数不完亮点,却没那么复杂。

BoxLayout能够在笔直和程度四个方向上摆放GUI组件,BoxLayout提供了如下二个简练的构造器。

BoxLayout(Container ,int axis)

钦点创立基于target容器的博克斯Layout布局管理器,该布局管理器中的组件按axis方向排列。在那之中axis有BoxLayout.X_AXIS(横向)和BoxLayout.Y_AXIS(纵向)两个样子

博克斯提供了多少个静态方法来创制一个档案的次序排列组件的Box容器

createHorizontalBox()