java获得鼠标所在位置的图像的rgb值。

王朝java/jsp·作者佚名  2006-01-08
宽屏版  字体: |||超大  

import java.awt.*;

import java.awt.event.*;

import java.awt.image.*;

import javax.swing.*;

public class GetRectPixel {

public GetRectPixel() {

ImageHolder holder = new ImageHolder();

JFrame frame = new JFrame();

JPanel panel = new JPanel();

panel.add(holder);

frame.getContentPane().add(panel);

frame.setSize(400,400);

frame.setVisible(true);

}

public static void main(String[] args) {

GetPixel getpixel = new GetPixel();

}

}

class ImageHolder extends Canvas{

BufferedImage bi ;//创建缓冲区图像

Image image;

MediaTracker mt ;//创建媒体跟踪器

int imageWidth; //图像宽度

int imageHeight;//图像高度

public ImageHolder() {

mt =new MediaTracker(this);

try{

image = Toolkit.getDefaultToolkit().createImage("gigi3.jpg");

mt.addImage(image,0);

mt.waitForAll();//等待直到所有的图像都以完成装填

imageWidth = image.getWidth(this);//获得单前图像的宽度

imageHeight = image.getHeight(this);//获得当前图像的长度

}

catch(Exception e){}

bi = new BufferedImage(imageWidth,imageHeight,BufferedImage.TYPE_INT_RGB);

addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent me){

//获得鼠标当前位置的横,纵坐标

int mouseX = (int)me.getPoint().getX();

int mouseY =(int) me.getPoint().getY();

//获得该处的rgb值

getPixel(mouseX,mouseY);

}

});

setSize(imageWidth,imageHeight);

}

public void paint(Graphics g){

int xCenter = (getSize().width / 2) - (imageWidth / 2);

int yCenter = (getSize().height / 2) - (imageHeight / 2);

g.drawImage(image, xCenter, yCenter, imageWidth, imageHeight, this);

}

public void getPixel(int x,int y){

//获得ImageHolder的色彩模型

ColorModel cm = this.getColorModel();

//把象素形式的色彩组件(ImageHolder)以rgb的形式返回。

int rgb = cm.getRGB(x*y);

//分别获得其r,g,b值。

int red = (rgb>>16)&0xff ;

int green = (rgb>>8)&0xff ;

int blue = (rgb)&0xff ;

System.out.println( "("+red+","+green+ ","+blue+ ")");

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有