PIZiadas圖形

PIZiadas圖形

我的世界是英寸.

圖形化編程: Doblebuffering : 在背景繪製 [JAVA]

doblebuffer在創建動畫引擎,我們已經看到了不良的刷新屏幕閃爍現象. 這種效果是由於消去圖像,並產生新的更新所需的時間, 有生命的物體的結果.

一種技術來避免這就是所謂的 雙緩衝或 “ðoublebuffered, 所以我們用兩個圖像 (顯存) 同時. 雖然在圖紙上, 我們看到對方,並最大限度地減少圖像閃爍消除之間的轉換時間.

計算機, 多個緩衝存儲器是利用一個以上的緩衝器保持的數據塊, 使得 “讀者” 你會看到一個完整版本的數據, 代替數據是由一個創建的局部更新版本 “作家”. 它也可以用來避免需要使用雙端口RAM, 當讀者和作家是不同的設備。()

我們修改類 “黑板” 我們已經修改以納入 動畫引擎 實現這種技術. 我們需要知道在圖形顯示足夠存儲器的尺寸來存儲, 和定義對象 “圖像” 這將是這將繪製圖形.

	尺寸d;
	私人 圖片mImage = NULL;

該方法 “油漆” 繪圖拿到第一張圖像的大小產生. 函數調用 “checkOffScreenImage()” 將負責確保對象 “mImage” 借鑒.

為了繪製這個對象請求您的圖形方向 與功能 “的getGraphics“. 然後,它會填充顏色為底色,我們使用這個元素繪製填充矩形.

我們呼籲程序繪製圖像, 我們已經在功能執行 “paintOffScreen” 通過這個圖形對象作為參數來使用它作為一個畫布.

最後一個函數將繪製屏幕或生成的畫布圖像.

	市民同步無效 油漆(圖形克) {
	   D =的getSize();
	   checkOffScreenImage();
	   圖形offG = mImage.getGraphics();
	   offG.setColor(的getBackground());
	   offG.fillRect(0, 0, 為d.width, 為d.height);
	   paintOffScreen(mImage.getGraphics());
	   g.drawImage(mImage, 0, 0, 空值);
	}

性能 “checkOffScreenImage()” 他將監督如果更改用於顯示的圖形信息,並產生一個對象的窗口的大小在其上繪製, 由功能 “的createImage()

	私人無效 checkOffScreenImage() {
	   尺寸D =的getSize();

	   如果 (為d.width == 0 || 為d.height == 0) {
		返回;
	   }
	   如果 (mImage == NULL || mImage.getWidth(空值) !=為d.width
	      || mImage.getHeight(空值) !=為d.height) {
		mImage =的createImage(為d.width, 為d.height);
	   }
	}

性能 “疼痛花花公子CREE” 是舊的函數或方法 “油漆” 這引起了我們的圖形對象, 所以你不值得補充意見. 我們乾脆改名.

	公共無效 paintOffScreen(圖形克){
	   枚舉枚舉= bd.elements();
	   對象ob;
	   而(enum.hasMoreElements()){
		OB = enum.nextElement();
		如果(OB的instanceof SimpleDrawable){
			((SimpleDrawable) 是否).油漆(克);
		}
	   }
	}

當你運行應用程序,您將看到的圖像閃爍消失.

JAVA

當然JAVA