制作截图 [英] make screenshot

查看:86
本文介绍了制作截图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想制作一个我创建的面板的屏幕截图,下面给出代码。
任何人都可以告诉我为什么我不得到吗?谢谢

i want to make a screenshot of the panel that i have created and the code is given below. Can any body please tell me why i am not getting.thanks

    public static final void makeScreenshot(JFrame argFrame) 
    {
      Rectangle rec = argFrame.getBounds();
      BufferedImage bufferedImage = new BufferedImage(rec.width, rec.height, BufferedImage.TYPE_INT_ARGB);
      argFrame.paint(bufferedImage.getGraphics());

    try 
   {
        // Create temp file.
        File temp = File.createTempFile("C:\\Documents and Settings\\SriHari\\My Documents\\NetBeansProjects\\test\\src\\testscreenshot", ".jpg");

        // Use the ImageIO API to write the bufferedImage to a temporary file
        ImageIO.write(bufferedImage, "jpg", temp);

        //temp.deleteOnExit();
    } 


   catch (IOException ioe) {} 
  } // 
        public static void main(String args[])
        {
           TimeTableGraphicsRunner ts= new TimeTableGraphicsRunner();
           for(long i=1;i<1000000000;i++);
           ts.makeScreenshot(jf);
            System.out.println("hi");
        }


推荐答案

以下对我有用:

public static void main (String [] args)
{
    final JFrame frame = new JFrame ();

    JButton button = new JButton (new AbstractAction ("Make Screenshot!")
    {
        @Override
        public void actionPerformed (ActionEvent e)
        {
            Dimension size = frame.getSize ();
            BufferedImage img = new BufferedImage (size.width, size.height, BufferedImage.TYPE_3BYTE_BGR);
            Graphics g = img.getGraphics ();
            frame.paint (g);
            g.dispose ();
            try
            {
                ImageIO.write (img, "png", new File ("screenshot.png"));
            }
            catch (IOException ex)
            {
                ex.printStackTrace ();
            }
        }
    });

    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    frame.getContentPane ().setLayout (new BorderLayout ());
    frame.getContentPane ().add (button, BorderLayout.CENTER);
    frame.pack ();
    frame.setVisible (true);
}

它不会渲染窗口标题和边框,因为这是由OS处理的,不是摆动。

It does not render window title and border because this is handled by OS, not Swing.

这篇关于制作截图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆