亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

舉例解析Java的圖像緩沖技術的使用

2019-11-26 14:56:18
字體:
來源:轉載
供稿:網友

當圖像信息量較大,采用以上直接顯示的方法,可能前面一部分顯示后,顯示后面一部分時,由于后面一部分還未從文件讀出,使顯示呈斑駁現象。為了提高顯示效果,許多應用程序都采用圖像緩沖技術,即先把圖像完整裝入內存,在緩沖區中繪制圖像或圖形,然后將緩沖區中繪制好的圖像或圖形一次性輸出在屏幕上。緩沖技術不僅可以解決閃爍問題,并且由于在計算機內存中創建圖像,程序可以對圖像進行像素級處理,完成復雜的圖像變換后再顯示。

【例】小應用程序程序演示圖像緩沖顯示技術。程序運行時,當鼠標在圖像區域內按下時,圖像會出現邊框,托動鼠標時,圖像也隨之移動。抬起鼠標后,邊框消失。程序將兩種狀態的圖像先放入兩個緩沖區,當鼠標拖動時,不斷地在新的位置重繪鼠標按下樣式的圖像鼠標抬起時,重繪鼠標抬起樣式的圖像。

import java.applet.*;import java.awt.*;imprt java.awt.image. * ;import javax.swing.*;import java.event.*;public class Example7_6 extends Applet{  Image myPicture;  /*init()方法中,先定義一個Image對象,并賦予createImage()方法的返回值,接著創建Graphics對象并賦予其圖形環境。最后,讓Graphics對象調用drawImage()方法顯示圖像。由于這里的Graphics對象offScreenGc是非屏幕對象是,小程序窗口不會有圖像顯示*/  public void init(){    myPicture = getImage(getCodeBase(), "myPic.JPG");    Image offScreenImage = createImage(size().width, size().height);    Graphics offScreenGc = offScreenImage.getGraphics();    new BufferedDemo(myPicture);  }  /*drawImage()方法的第四個參數是實現ImageObserver接口,在init()方法中,調用drawImage()方法的參數是this,所以小程序要定義imageUpdate()方法*/  public boolean imageUpdate(Image img, int infoFlg, int x, int y, int w, int h){    if (infoFlg = ALLBITS){ // 表示圖像已全部裝入內存      repaint();      return false;// 防止線程再次調用imageUpdate()方法    }    else      return true;  }}/*程序的執行過程是,當小程序調用drawImage()方法時,drawImage()方法將創建一個調用 imageUpdate()方法的線程,在imageUpdate()方法中,測定圖像是否已在部分調入內存。創建的線程不斷調用imageUpdate()方法,直到該方法返回false為止。參數infoFlg使小程序能知道圖像裝入內存的情況。當infoFlg等于ALLBITS時,表示圖像已全部裝入內存。當該方法發現圖像已全部裝入內存后,置imageLoaded為真,并調用repaint()方法重畫小程序窗口。方法返回false防止線程再次調用imageUpdate()方法。*/class BufferedDemo extends JFrame{  public BufferedDemo(Image img){    this.getContentPane().add(new PicPanel(img));    setTile("雙緩技術演示");    setSize(300, 300);    setVisible(true);  }}class PicPane extends JPanel implements MouseListener, MouseMotionListener{  int x = 0, y = 0, dx = 0, cy = 0;  BufferedImage bimg1, bimg2;  boolean upstate = true;  public picPanel(Image img){    this.setBackground(Color.white);    this.addMouseListener(this);    this.addMouseMotionListener(this);    bimg1 = new BufferedImage(img.getWidth(this), img.getHeight(this),    BufferedImage.TYPE_INT_ARGB);    bimg2 = new BufferedImage(img.getWidth(this), img.getHeight(this),    BufferedImage.TYPE_INT_ARGB);    Graphics2D g2D1 = bimg1.createGraphics();    Graphics2D g2D2 = bimg2.createGraphics();    g2D1.drawImage(img, 0, 0, this);    g2D2.drawImage(img, 0, 0, this);    g2D2.drawRect(1, 1, img.getWidth(this) - 3, img.getHeight(this) - 3);  }  public void paintComponent(Graphics g){    super.painComponent(g);    Graphics2D g2D = (Graphics2D)g;    if (upState)      g2D.drawImage(bimg1, x, y, this);    else      g2D.drawImage(bimg2.x, y, this);  }  public void mousePress(MouseEvent e){    if (e.getX() >= x && e.getX() < x + bimg1.getWidth(this) && e.getY() >= y&& e.getY() < y + bimg1.getHeight(this)){      upstate = false;      setCursor(Cursor.getPredefinedCursor(Coursor.HAND_CURSOR));      dx = e.getX() - x;      dy = e.getY() - y;      repain();    }  }  public void mouseExited(MouseEvent e){}  public void mouseClicked(MouseEvent e){}  public void mouseEntered(MouseEvent e){}  public void MouseReleased(MouseEvent e){    this.setCursor(Cursor.getpredefinedCursor(Cursor.DEFAULT_CURSOR));    upState = true;    repaint();  }  public void mouseMoved(MouseEvent e){}  public void mouseDragged(MouseEvent e){    if (!upState){      x = e.getX() - dx;      y = e.getY() - dy;      repaint();    }  }}

程序要創建緩沖區圖像,需要引入java.awt.image包中的BufferedImage類。要創建一個緩沖區圖,可以調用createImage()方法,該方法返回一個Image對象,然后再將它轉換成一個BufferedImage對象。例如,代碼:

  BufferedImage bimage = (BufferedImage)this.createImage(this.getWidth(),this.getHeight());


也可利用以下構造方法來建立。

  BufferedImage(int width,int heigh, int imageType);


其中參數 imageType是圖像類型。

使用緩沖區顯示圖像,需先在緩沖區中準備好圖像,再將緩沖區中的圖像顯示在界面上。顯示圖像需要圖形對象Graphics,可以通過以下方法建立:

  Graphics2D g2d = bimge.createGraphics();

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国产综合区久久久久久久| 久久久亚洲精选| 午夜剧场成人观在线视频免费观看| 久久最新资源网| 欧美午夜影院在线视频| 91精品久久久久久久久久入口| 国产做受69高潮| 亚洲在线www| 性欧美视频videos6一9| 亚洲精品综合久久中文字幕| 日韩有码在线播放| 欧美一级大片视频| 久久精品视频亚洲| 91在线观看免费高清| 欧美日韩中文字幕日韩欧美| 国产suv精品一区二区| 精品久久久999| 国产欧美精品日韩精品| 综合136福利视频在线| 亚洲无线码在线一区观看| 日韩av电影免费观看高清| 亚洲va国产va天堂va久久| 日韩精品中文字幕有码专区| 久久免费国产精品1| 国产一区二区三区在线观看网站| 亚洲自拍偷拍色图| 国产精品久久综合av爱欲tv| 国产脚交av在线一区二区| 日韩大陆毛片av| 亚洲精品suv精品一区二区| 亚洲成人三级在线| 国产成人91久久精品| 亚洲精品少妇网址| 91超碰中文字幕久久精品| 欧美午夜精品久久久久久人妖| 国产精品电影网| 亚洲激情电影中文字幕| 国产精品成人品| 国产91精品久久久久久| 一道本无吗dⅴd在线播放一区| 日韩精品中文字幕有码专区| 精品爽片免费看久久| 日本成人在线视频网址| 91免费国产视频| 中文字幕亚洲一区二区三区| 91久久久久久久一区二区| 91精品久久久久久久久久久久久久| 国产精品久久久91| 亚洲视频日韩精品| 日韩精品视频在线免费观看| 亚洲国产日韩精品在线| 欧美美最猛性xxxxxx| 一区二区三区 在线观看视| 亚洲人线精品午夜| 这里精品视频免费| www.日韩免费| 亚洲国产精品va在线看黑人动漫| 国产欧美精品xxxx另类| 日韩av在线高清| 91精品国产综合久久香蕉922| 日韩av在线免费观看一区| 亚洲精品自产拍| 91在线视频精品| 91精品久久久久| 国产啪精品视频| 日韩精品在线观看视频| 亚洲精品一区二三区不卡| 成人激情免费在线| 成人h视频在线观看播放| 久久成人免费视频| 国产97在线播放| 国产精品视频网站| 精品成人乱色一区二区| 成人久久久久爱| 成人精品视频99在线观看免费| 久久天天躁狠狠躁夜夜躁| 国产精品精品视频| 国产不卡视频在线| 中文字幕在线观看日韩| 国产午夜精品免费一区二区三区| 九色91av视频| 欧美日韩美女在线观看| 78m国产成人精品视频| 日韩成人黄色av| 亚洲xxxx视频| 国产精品91视频| 久久国产精品网站| 久久精品久久久久久国产 免费| 5566成人精品视频免费| 国模私拍一区二区三区| 日韩免费精品视频| 久久久亚洲影院| 国产91精品不卡视频| 欧美午夜www高清视频| 国产欧美日韩精品丝袜高跟鞋| 久久99视频免费| 中文字幕亚洲一区在线观看| 91精品视频免费观看| 久久伊人精品一区二区三区| 日本午夜精品理论片a级appf发布| 欧美裸体xxxx极品少妇| 91精品国产综合久久香蕉922| 亚洲国产欧美日韩精品| 国产视频一区在线| 97超级碰在线看视频免费在线看| 国产精品视频自在线| 欧美日本高清一区| 久久综合伊人77777蜜臀| 亚洲成人a**站| 亚洲图片在线综合| 欧美视频免费在线观看| 4388成人网| 日韩视频免费在线| 91av在线网站| 亚洲日本成人网| 久久综合久久美利坚合众国| 欧美精品xxx| 国产精品日韩欧美| 欧美xxxx做受欧美.88| 日本91av在线播放| 国产日本欧美在线观看| 欧美视频精品一区| 中文字幕av日韩| 俺去了亚洲欧美日韩| 欧美精品videossex88| 精品国产91久久久久久老师| 国产亚洲欧洲高清一区| 国产成人精品一区二区在线| 欧美在线视频在线播放完整版免费观看| 国产精品第七影院| 久久精品国产久精国产一老狼| 亚洲黄页网在线观看| 精品国产一区二区三区久久久狼| 欧美日韩免费在线| 福利视频一区二区| 欧美国产亚洲精品久久久8v| 欧美一级视频免费在线观看| 国产精品久久久久7777婷婷| 欧美午夜宅男影院在线观看| 国内精品伊人久久| 久久中文精品视频| 97国产精品视频人人做人人爱| 国产精品jizz在线观看麻豆| 亚洲图中文字幕| 久久久久久久一区二区三区| 国产精品久久久久久久久免费| 国产日韩专区在线| 欧美视频在线免费| 俺也去精品视频在线观看| 日韩视频在线一区| 另类天堂视频在线观看| 超碰97人人做人人爱少妇| 精品偷拍一区二区三区在线看| 久久影院资源网| 51色欧美片视频在线观看| 亚洲综合视频1区| 成人免费在线网址| 欧美性猛交视频| 久久综合免费视频影院| 在线亚洲午夜片av大片| 中文字幕视频在线免费欧美日韩综合在线看| 91久久国产综合久久91精品网站| 亚洲欧美第一页| 国产午夜精品视频免费不卡69堂|