`

怎样获得当前mouse坐标处的颜色??[

    博客分类:
  • Java
阅读更多
import   java.awt.*;
import   java.awt.event.*;
import   java.awt.image.*;
import   javax.swing.*;  

public   class   GetPixel   {

public   PixelMadness()   {
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   {
ImageIcon   icon   =   new   ImageIcon( "zx2.jpg ");  
Image   image   =   icon.getImage();  
int   imageWidth   =   image.getWidth(this);
int   imageHeight   =   image.getHeight(this);
int[]   pixelArray   =   new   int[imageWidth   *   imageHeight];
PixelGrabber   grabber   =   new   PixelGrabber(image,0,0,imageWidth,imageHeight,pixelArray,0,imageWidth);

public   ImageHolder()   {
try   {   grabber.grabPixels();   }
catch(InterruptedException   ie){
System.out.println( "Pixel   array   not   completed ");
return;
}

addMouseListener(new   MouseAdapter(){
public   void   mouseClicked(MouseEvent   me){
int   mouseX   =   (int)me.getPoint().getX();
int   mouseY   =(int)   me.getPoint().getY();
int   pixel   =   pixelArray[(mouseY   *   imageWidth)   +   mouseX];
getPixel(pixel);
}
});

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   pixel){
        int     alpha   =   (pixel   > >   24)&0xff;
        int     red     =   (pixel   > >   16)&0xff;
        int     green   =   (pixel   > >  &0xff;
        int     blue     =   (pixel)&0xff;
        System.out.println(   "( "+alpha+ ", "+red+ ", "+green+   ", "+blue+   ") ");
}
}  










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();
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){
    ColorModel   cm   =   this.getColorModel();
    int   rgb   =   cm.getRGB(x*y);
    int   red   =   (rgb> > 24)&0xff   ;
    int   green   =   (rgb> > 16)&0xff   ;
    int   blue   =   (rgb> >&0xff   ;
    System.out.println(   "( "+red+ ", "+green+   ", "+blue+   ") ");
  }
}  
分享到:
评论

相关推荐

    API之网络函数---整理网络函数及功能

    GetTextCharsetInfo 获取与当前选定字体的字符集有关的详细信息 GetTextColor 判断当前字体颜色。通常也称为“前景色” GetTextExtentExPoint 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息 ...

    HGE_系列教材(1-9)

    渲染时,将对象的像素颜色(而非顶点的颜色)与当前屏幕的对应像素颜色进行alpha 混 合。alpha 混合使用到alpha 通道,对于两个像素颜色进行如下操作,得到一个颜色: R(C)=alpha*R(B)+(1-alpha)*R(A) G(C)=alpha*G...

    C++MFC教程

    Visual C++MFC入门教程 目录 +-- 第一章 VC入门 |------ 1.1 如何学好VC |------ 1.2 理解Windows消息机制 |------ 1.3 利用Visual C++/MFC开发Windows程序的优势 ...颜色和背景色不属于字体的属性。关于如何创建...

    C#全能速查宝典

    1.5.14 Item属性——获取或设置指定索引处的元素 111 1.5.15 Length属性——获取长度 112 1.5.16 Next方法——返回一个指定范围内的随机数 113 1.5.17 Queue类——队列 115 1.5.18 Remove方法——移除指定项 116 ...

    EXTJS总结.txt

    一、获取元素(Getting Elements) 1.Ext.get var el = Ext.get('myElementId');//获取元素,等同于document.getElementById('myElementId');//会缓存 2. Ext.fly var el = Ext.fly('myElementId')//不需要缓存...

    opengl的太阳系模型

    //使用质量最好的模式指定颜色和纹理坐标的插值质量 glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); // 设置环境光 glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); // 设置漫反射光 glEnable(GL_...

    c++语言代码

    /*获取鼠标当前位置*/ void MouseGetXY() { _AX=0x03; geninterrupt(0x33); MouseX=_CX; MouseY=_DX; } /*鼠标按键情况,返回0表示只移动,返回1表示左右键同时按下,2表示只按了左键,3表示只按了...

    多功能 DLL 动态库

    说明:取得当前鼠标处颜色值RGB,分别存放到变量(R,G,B)中。 Boolean TestPort( int port,string svrIP ) 说明:检测指定机器的端口是否开放,参数:port:要检测的端口;svrip 指定机器的IP或机器名。 Long ...

    Window 消息大全

    例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,它在Windows单元中是这样声明的: type TMsg = packed record hwnd: HWND; //窗口句柄 message: UINT;//消息...

Global site tag (gtag.js) - Google Analytics