最近有计算机图形学的实验,我是用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分送上,谢谢了。
在区域填充那一节,需要用种子填充算法。
但是算法里面必须能够获取画布上某一坐标颜色的方法。
用VC很方便,用java就不知道该怎么办了。
我的窗口结构是:
一个JFrame, Jframe上直接添加了5个选项卡面板,用JTabbedPane添加五个Jpanel实现的。
每个JPanel面板用的BorderLayout布局,south部分又在原来面板上添加一个新的JPanel面板来添加按钮,CENTER部分又在原来面板上添加一个新的JPanel面板来在上面绘图。都是通过画点来绘图的。
说的有点复杂了,问题很简单。就是想获取一个JPanel面板上某一坐标点的颜色(相对于本JPanel左上角)。
我试过用Robot,但这个好像是获取整个屏幕上某点的颜色。需要进行坐标转换。
我用jpanel.getLocationOnScreen()加robot.getPixelColor(x , y),来进行坐标转换。不过通过检验后,还是不对。 有没有更好的,简单点的方法 ? 如果还是用robot,望高手贴一下代码。50分送上,谢谢了。
getLocationOnScreen得到的是这个panel的原点在屏幕中的位置(X0, Y0)
那么实际(x1,y1)在屏幕中位置就是
(x2 = x1 + x0, 2 = y1 + y0)
Color pixelColor = r.getPixelColor(x2, y2);种子填充这样是没问题的,我学图形学的时候,期末考试一题就是上机实现这个算法。你仔细查看一下吧
没有参数,就对应这基本的屏幕坐标系。重载的那个函数我没有研究过~~
然后通过这种坐标转换得到的颜色 却不是黑色。不知道为什么,我再去检查一下。
2、用SwingUtilities.convertPointToScreen(Point s, Component com);转了和上面结果一样,不对