想实现一下功能:用鼠标在当前窗口选中(用鼠标拖拉)一个矩形区域,然后能够放大这个巨型区域? 我想可以这样:首先根据地图生成一个该地图的GIF或者JPEG文件,放入一个缓冲区然后根据鼠标的坐标到缓冲区里找到对应的区域显示,放大镜相当于一个Label 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 功能我已经实现,在mouseMoved()里如下:GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();GraphicsDevice screen = environment.getDefaultScreenDevice();Robot robot = null;p = e.getPoint(); if (p == null){return;}Object temp = e.getSource();if (temp instanceof Component) SwingUtilities.convertPointToScreen(p,(Component)temp);else SwingUtilities.convertPointToScreen(p,test.this);Rectangle screenRect = new Rectangle(p.x-10,p.y-10,20,20);BufferedImage image = robot.createScreenCapture(screenRect);//抓图//以下是放大鼠标周围20pix的空间,factor = 2;AffineTransform transform = AffineTransform.getScaleInstance(factor,factor);BufferedImageOp op = new AffineTransformOp(transform,AffineTransformOp.TYPE_BILINEAR);BufferedImage filteredImage = new BufferedImage(image.getWidth()*factor, image.getHeight()*factor, image.getType());op.filter(image, filteredImage);ImageIcon icon = new ImageIcon(filteredImage);xxx.setSize(20*factor,20*factor);//在JLabel xxx上显示放大的效果xxx.setIcon(icon);但放大之后图片不清晰,有什么改进方法吗? public class SuperView extends JPanel{ SuperModel model; TreeView treeView; TopoView topoView; public SuperView(SuperModel model) { this.model=model; BorderLayout borderLayout=new BorderLayout(); this.setLayout(borderLayout); treeView=new TreeView(model); topoView=new TopoView(model); JScrollPane treeScrollPane=new JScrollPane(treeView); JScrollPane topoScrollPane=new JScrollPane(topoView); JSplitPane splitPane=new JSplitPane(); splitPane.add(treeScrollPane,JSplitPane.LEFT); splitPane.add(topoScrollPane,JSplitPane.RIGHT); this.add(splitPane,BorderLayout.CENTER); } public void update() { topoView.topoViewPanel.repaint(); treeView.reload(); }} 关于线程 静态内部类的问题 为什么我写的applet老是不能得到想要的显示 请问一个关于package的问题,初学者,不吝赐教 链表排序 弱问一个正则表达式的问题 Swing Applet or JSP 怎样获取某一点的颜色 怎样存储jtree所有展开路经? 关于socket发送带空格字符串的问题,请各位大神帮帮忙! 谁我告诉几本JAVA入门电子书!能下载就送分哟! 请教:下面的表达式怎么理解???
GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice screen = environment.getDefaultScreenDevice();
Robot robot = null;
p = e.getPoint();
if (p == null){return;}
Object temp = e.getSource();
if (temp instanceof Component)
SwingUtilities.convertPointToScreen(p,(Component)temp);
else
SwingUtilities.convertPointToScreen(p,test.this);
Rectangle screenRect = new Rectangle(p.x-10,p.y-10,20,20);
BufferedImage image = robot.createScreenCapture(screenRect);//抓图
//以下是放大鼠标周围20pix的空间,factor = 2;
AffineTransform transform = AffineTransform.getScaleInstance(factor,factor);
BufferedImageOp op = new AffineTransformOp(transform,AffineTransformOp.TYPE_BILINEAR);
BufferedImage filteredImage = new BufferedImage(image.getWidth()*factor, image.getHeight()*factor, image.getType());
op.filter(image, filteredImage);
ImageIcon icon = new ImageIcon(filteredImage);
xxx.setSize(20*factor,20*factor);//在JLabel xxx上显示放大的效果
xxx.setIcon(icon);但放大之后图片不清晰,有什么改进方法吗?
public class SuperView extends JPanel
{
SuperModel model;
TreeView treeView;
TopoView topoView;
public SuperView(SuperModel model)
{
this.model=model;
BorderLayout borderLayout=new BorderLayout();
this.setLayout(borderLayout); treeView=new TreeView(model);
topoView=new TopoView(model); JScrollPane treeScrollPane=new JScrollPane(treeView);
JScrollPane topoScrollPane=new JScrollPane(topoView); JSplitPane splitPane=new JSplitPane();
splitPane.add(treeScrollPane,JSplitPane.LEFT);
splitPane.add(topoScrollPane,JSplitPane.RIGHT);
this.add(splitPane,BorderLayout.CENTER);
}
public void update()
{
topoView.topoViewPanel.repaint();
treeView.reload();
}
}