java graphics类详解_Graphics类与图形绘制笔记

Graphics类与图形绘制

Componentp.getGraphics方法与Grahpics类

Graphics.drawLine(int x1,int y1,int x2, int y2)方法;

Graphics.drawStringString str,int x,int y)方法;

Graphics.drawSting方法的坐标参数是以坐下方为参考点的;

例:

package drawline;

import java.awt.Color;

import java.awt.Font;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class DrawLine extends Frame {

private static final long serialVersionUID = 9004940250333651314L;

public DrawLine()

{

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e) {

dispose();

System.exit(0);

}

});

this.addMouseListener(new MouseAdapter()

{

int orgX;

int orgY;

public void mousePressed(MouseEvent e)

{

orgX = e.getX();

orgY = e.getY();

}

public void mouseReleased(MouseEvent e)

{

Graphics g = getGraphics();

g.setColor(Color.RED);

g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));

g.drawString(orgX + "," + orgY,orgX,orgY);

g.drawString(e.getX() + "," + e.getY(), e.getX(),e.getY());

g.drawLine(orgX, orgY, e.getX(),e.getY());

}//为什么用getGraphics().setColor(Color.RED)是不用导java.awt.Graphics包

});

}

public static void main( String[] args) {

System.out.println("String DrawLine");

DrawLine mainFrame = new DrawLine();

mainFrame.setSize(400,400);

mainFrame.setTitle("Drawline");

mainFrame.setVisible(true);

}

}

组件重建的处理:

1 组件重绘的原理  曝光

2 paint(Graphics g)的作用

AWT组件重绘路线:

AWT Thread ->paint() ->AWT Thread

repaint()+AWT Thread ->update(清除组件表面内容调用paint()方法)->paint();

例:

package drawline;

import java.awt.Color;

import java.awt.Font;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.util.Enumeration;

import java.util.Vector;

public class DrawLine extends Frame

{

int orgX;

int orgY;

int endX;

int endY;

Vector vLines = new Vector();

public void paint(Graphics g)

{

g.setColor(Color.RED);

g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));

Enumeration e = vLines.elements();

while(e.hasMoreElements())

{

MyLine line = (MyLine)e.nextElement();

line.drawMe(g);

}

//g.drawLine(orgX, orgY, endX, endY);

}

private static final long serialVersionUID = 9004940250333651314L;

public DrawLine()

{

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e) {

dispose();

System.exit(0);

}

});

this.addMouseListener(new MouseAdapter()

{

public void mousePressed(MouseEvent e)

{

orgX = e.getX();

orgY = e.getY();

}

public void mouseReleased(MouseEvent e)

{

endX = e.getX();

endY = e.getY();

/*Graphics g = getGraphics();

g.setColor(Color.RED);

g.setFont(new Font(null,Font.ITALIC|Font.BOLD,30));

g.drawString(orgX + "," + orgY,orgX,orgY);

g.drawString(e.getX() + "," + e.getY(), e.getX(),e.getY());

g.drawLine(orgX, orgY, e.getX(),e.getY());

*/

vLines.add(new MyLine(orgX,orgY,endX,endY));

repaint();

}//为什么用getGraphics().setColor(Color.RED)是不用导java.awt.Graphics包

//Enumeration???????????????????????????

});

}

public static void main( String[] args) {

System.out.println("String DrawLine");

DrawLine mainFrame = new DrawLine();

mainFrame.setSize(400,400);

mainFrame.setTitle("Drawline");

mainFrame.setVisible(true);

}

}

package drawline;

import java.awt.Graphics;

public class MyLine

{

private int orgX;

private int orgY;

private int endX;

private int endY;

public MyLine(int orgX, int orgY, int endX, int endY)

{

this.orgX = orgX;

this.orgY = orgY;

this.endX = endX;

this.endY = endY;

}

public void drawMe(Graphics g)

{

System.out.println(orgX + "," + orgY + " "+endX + "," + endY);

g.drawString(orgX + "," + orgY,orgX,orgY);

g.drawString(endX + "," + endY,endX,endY);

g.drawLine(orgX, orgY, endX, endY);

}

}

posted on 2008-08-10 07:51 lanxin1020 阅读(205) 评论(0)  编辑  收藏 所属分类: j2se

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值