爱玺玺

爱玺玺的生活日记本。wx:lb87626

使用双重缓存在图像曝光后恢复组件上的图像,但是这里没有图像了

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Image;

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 DrawLine1 extends Frame{

int X;

int Y;

int endX;

int endY;

Image oimg=null;//Image类

Graphics og=null;//Graphics抽象类,它的对象是用来传给paint()方法作为画笔的

public void paint(Graphics g){//这个对象g就相当于一个画笔。重写frame的paint方法,调用这个方法可以取出原来绘制的图形

   if(oimg!=null)

g.drawImage(oimg, 20, 50, this);

}


public DrawLine1(){//创建构造方法,关闭按钮使用

setSize(400, 400);

setTitle("DrawLine");

setVisible(true);

Dimension d=this.getSize();

oimg=this.createImage(d.width, d.height);//创建一个图像

og=oimg.getGraphics();//og就是这个图像的画笔对象,画在oimg图片上?

addWindowListener(new WindowAdapter() {//创建一个匿名类重写适配器WindowAdapter类

public void windowClosing(WindowEvent e){

dispose();

System.exit(0);

}

 });


this.addMouseListener(new MouseAdapter() {//根据获取的坐标点绘图

public void mousePressed(MouseEvent e){

X=e.getX();

Y=e.getY();

};


public void mouseReleased(MouseEvent e){//鼠标事件被触发开始画线

endX=e.getX();

endY=e.getY();

MyLine ml=new MyLine(X, Y, endX, endY);//画线对象,每次触发鼠标事件时就会重新再创建个对象

Graphics g=getGraphics();

g.setColor(Color.RED);

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

g.drawString( X+":"+Y, X, Y);

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

g.drawLine(X,Y,e.getX(),e.getY());

og.setColor(Color.RED);

og.setFont(new Font(null, Font.BOLD, 30));

og.drawString( X+":"+Y, X, Y);

og.drawString( e.getX()+":"+e.getY(), e.getX(), e.getY());

og.drawLine(X,Y,e.getX(),e.getY());

};

});

}


public static void main(String[] args){

DrawLine1 mainFrame=new DrawLine1();//创建窗口对象,怎么绘图由其构造方法提供

}

}


发表评论:

Powered By Z-BlogPHP 1.4 Deeplue Build 150101

Copyright Your WebSite.Some Rights Reserved.

蜀ICP备11021721号-5