最近有计算机图形学的实验,我是用java做的。
       在区域填充那一节,需要用种子填充算法。
       但是算法里面必须能够获取画布上某一坐标颜色的方法。
       用VC很方便,用java就不知道该怎么办了。
       我的窗口结构是:
               一个JFrame, Jframe上直接添加了5个选项卡面板,用JTabbedPane添加五个Jpanel实现的。
               每个JPanel面板用的BorderLayout布局,south部分又在原来面板上添加一个新的JPanel面板来添加按钮,CENTER部分又在原来面板上添加一个新的JPanel面板来在上面绘图。都是通过画点来绘图的。
       
        说的有点复杂了,问题很简单。就是想获取一个JPanel面板上某一坐标点的颜色(相对于本JPanel左上角)。
        我试过用Robot,但这个好像是获取整个屏幕上某点的颜色。需要进行坐标转换。
        我用jpanel.getLocationOnScreen()加robot.getPixelColor(x , y),来进行坐标转换。不过通过检验后,还是不对。       有没有更好的,简单点的方法 ?  如果还是用robot,望高手贴一下代码。50分送上,谢谢了。
       

解决方案 »

  1.   

    不是吧~~你要查看的那个点比如说是(X1,y1)
    getLocationOnScreen得到的是这个panel的原点在屏幕中的位置(X0, Y0)
    那么实际(x1,y1)在屏幕中位置就是
    (x2 = x1 + x0, 2 = y1 + y0)
     Color pixelColor = r.getPixelColor(x2, y2);种子填充这样是没问题的,我学图形学的时候,期末考试一题就是上机实现这个算法。你仔细查看一下吧
      

  2.   

    忘记说了~~ Robot r = new Robot();
    没有参数,就对应这基本的屏幕坐标系。重载的那个函数我没有研究过~~
      

  3.   

       我就按这个思路做的。先在jpanel的(100,100)画了一个黑色的点,用g.drawOval(100, 100, 1, 1)画的。
    然后通过这种坐标转换得到的颜色 却不是黑色。不知道为什么,我再去检查一下。
      

  4.   

    1、按这种方式转化了,好像不行
    2、用SwingUtilities.convertPointToScreen(Point s, Component com);转了和上面结果一样,不对