第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何修復(fù)由于加載圖像而導(dǎo)致的屏幕閃爍?

如何修復(fù)由于加載圖像而導(dǎo)致的屏幕閃爍?

拉風(fēng)的咖菲貓 2023-06-08 19:40:14
我正在嘗試加載一個圖像并在其上繪制圖像,然后將其顯示在框架上。我還可以將圖像加載到框架上并在框架上繪圖,但這會在我的屏幕上產(chǎn)生更多的閃爍。在下面的代碼中,當(dāng)用戶按下任意鍵時屏幕會閃爍,因?yàn)閳D像會再次加載,并且會在上面繪制球的新位置。if up_key y--if down_key y++if left_key x--if right_key x++根據(jù)按下的鍵重新顯示圖像并更新球的位置。如何減少閃爍效果以使其平滑?我在文件構(gòu)造函數(shù)中給出的路徑必須被替換。import java.awt.*;import java.io.*;import java.awt.image.*;import javax.imageio.ImageIO;import java.awt.event.*;class MyFrame extends Frame implements KeyListener {    BufferedImage img;    int x=100,y=100;    public MyFrame()    {        super("Box");        this.setSize(1382,784);        this.setVisible(true);        this.addKeyListener(this);        this.requestFocus();        this.setResizable(false);    }    public void make()    {        try{        img=ImageIO.read(new File("c:/users/udesh_2/desktop/Boundary.jpg"));        Graphics gfx=img.getGraphics();        gfx.setColor(Color.black);        gfx.fillOval(x,y,40,40);        }        catch(IOException io){}    }    @Override    public void paint(Graphics g)    {        make();        g.drawImage(img,0,0,getWidth(),getHeight(),null);    }    public static void main(String $[])    {        MyFrame f=new MyFrame();        f.make();        f.repaint();    }    public void keyPressed(KeyEvent key)    {        boolean found=false;        if(key.getKeyCode()==KeyEvent.VK_UP)        {            found=true;            y--;        }        if(key.getKeyCode()==KeyEvent.VK_DOWN)        {            found=true;            y++;        }        if(key.getKeyCode()==KeyEvent.VK_LEFT)        {            found=true;            x--;        }        if(key.getKeyCode()==KeyEvent.VK_RIGHT)        {            found=true;            x++;        }                    if(found)        repaint();    }    public void keyTyped(KeyEvent key){}    public void keyReleased(KeyEvent key){}}
查看完整描述

2 回答

?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個贊

img您每次調(diào)用時都在設(shè)置變量值repaint(),這會導(dǎo)致閃爍。而是在你的構(gòu)造函數(shù)中初始化它一次。在這種情況下也不需要額外的 make 方法。這應(yīng)該有效:


import java.awt.*;

import java.io.*;

import java.awt.image.*;

import javax.imageio.ImageIO;

import java.awt.event.*;


class MyFrame extends Frame implements KeyListener {


    BufferedImage img;

    int x = 100, y = 100;


    public MyFrame() {

        super("Box");

        this.setSize(480, 480);

        this.setVisible(true);

        this.addKeyListener(this);

        this.requestFocus();

        this.setResizable(false);

        try {

            img = ImageIO.read(new File("c:/users/udesh_2/desktop/Boundary.jpg"));   

        } catch (IOException io) {

            io.printStackTrace();

        }

    }


    @Override

    public void paint(Graphics g) {

        super.paint(g);

        g.drawImage(img, 0, 0, getWidth(), getHeight(), this);

        g.setColor(Color.black);

        g.fillOval(x, y, 40, 40);

    }


    public static void main(String $[]) {

        MyFrame f = new MyFrame();

        f.repaint();

    }


    public void keyPressed(KeyEvent key) {

        boolean found = false;


        if (key.getKeyCode() == KeyEvent.VK_UP) {

            found = true;

            y--;

        }

        if (key.getKeyCode() == KeyEvent.VK_DOWN) {

            found = true;

            y++;

        }

        if (key.getKeyCode() == KeyEvent.VK_LEFT) {

            found = true;

            x--;

        }

        if (key.getKeyCode() == KeyEvent.VK_RIGHT) {

            found = true;

            x++;

        }

        if (found) {

            repaint();

        }

    }


    public void keyTyped(KeyEvent key) {

    }


    public void keyReleased(KeyEvent key) {

    }

}


查看完整回答
反對 回復(fù) 2023-06-08
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個贊

import java.awt.*;

import java.io.*;

import java.awt.image.*;

import javax.imageio.ImageIO;

import java.awt.event.*;


class MyFrame extends Frame implements KeyListener {


    BufferedImage img;

    Image _img;

    Graphics gfx;

    int x = 100, y = 100;


    public MyFrame() {

    super("Box");

    this.setSize(1000,780);

    this.setVisible(true);

    this.addKeyListener(this);

    this.requestFocus();

    this.setResizable(false);

    try {

        img = ImageIO.read(new File("c:/users/udesh_2/desktop/Boundary.jpg"));   

    } catch (IOException io) {

        io.printStackTrace();

    }

    _img=createImage(getWidth(),getHeight());

    gfx=_img.getGraphics();


    }


    @Override

    public void paint(Graphics g) {

        if(img!=null){

        gfx.drawImage((Image)img,0,0,getWidth(),getHeight(),this);

        gfx.fillOval(x,y,30,30);


        g.drawImage(_img, 0, 0, getWidth(), getHeight(), this);


        try

        {

            Thread.sleep(70);


        }catch(Exception e){System.out.println(e);}

        }

    }


    public static void main(String $[]) {

        MyFrame f = new MyFrame();

        f.repaint();

    }


    public void keyPressed(KeyEvent key) {

    boolean found = false;


        if (key.getKeyCode() == KeyEvent.VK_UP) {

            found = true;

            y-=2;

        }

        if (key.getKeyCode() == KeyEvent.VK_DOWN) {

            found = true;

            y+=2;

        }

        if (key.getKeyCode() == KeyEvent.VK_LEFT) {

            found = true;

            x-=2;

        }

        if (key.getKeyCode() == KeyEvent.VK_RIGHT) {

            found = true;

            x+=2;

        }

        if (found) {

            repaint();

        }

    }


    public void keyTyped(KeyEvent key) {

    }


    public void keyReleased(KeyEvent key) {

    }

}


查看完整回答
反對 回復(fù) 2023-06-08
  • 2 回答
  • 0 關(guān)注
  • 195 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號