黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

java 中paint .repaint.update

系統(tǒng) 2181 0

paint,repaint,update,這3個(gè)都跟繪圖有關(guān)系的相關(guān)的方法把。

這3個(gè)雖然以前用過(guò),但是但是沒有完全理解。

下面這個(gè)段話是轉(zhuǎn)載的(感覺講的比較好):

repaint()這個(gè)方法是一個(gè)具有刷新頁(yè)面效果的方法,如果你要頁(yè)面進(jìn)行重畫就可以調(diào)用.
從上面的流程圖可以看出,在繪制動(dòng)畫圖形時(shí)候如果沒有調(diào)用repaint()方法的時(shí)候直接就是由線程調(diào)用paint()方法進(jìn)行繪制,用 repaint()進(jìn)行刷新顯示.但是這樣的動(dòng)畫會(huì)有個(gè)缺點(diǎn)(這樣的效果繪制出來(lái)會(huì)有閃爍).想想做出來(lái)的動(dòng)畫總是隔一段時(shí)間就閃爍,有人會(huì)看嗎?那么應(yīng) 該怎么去除閃爍呢?我再下面的文章中會(huì)講到.這里主要的是說(shuō)明repaint()這個(gè)方法.
在調(diào)用了repaint()的時(shí)候我門可以看 出,它并不是直接就去繪制動(dòng)畫(調(diào)用paint()),而是通過(guò)調(diào)用AWT線程在由線程去調(diào)用另一個(gè)方法update()再由update()調(diào)用畫筆 paint()方法進(jìn)行繪制. 那么這里為什么要多做一步呢?這樣是不是為我門多增加代碼的書寫量呢?回答是當(dāng)然不會(huì),如果你不調(diào)用repaint()那么 就不能實(shí)現(xiàn)每一次的刷新顯示,就只會(huì)繪制重疊的圖形,不能一張一張的繪制出來(lái).那么其中調(diào)用的update()到底是起到什么樣的作用呢?
update():清除當(dāng)前顯示并調(diào)用paint()方法.當(dāng)然這個(gè)update()方法是可以被修改的.
綜合上面的介紹可以總結(jié)出repaint()的工作原理:repaint()通過(guò)調(diào)用線程再由線程去調(diào)用update()方法清除當(dāng)前顯示并再調(diào)用paint()方法進(jìn)行繪制下一個(gè)需要顯示的內(nèi)容.這樣就起到了一種圖片的交替顯示從而在視角上形成了動(dòng)畫.


下面的代碼是我寫的相關(guān)的例子,僅供大家參看,如有什么不足,請(qǐng)大家指教啊 大笑 ,共同學(xué)習(xí)啊,

該代碼的功能的是實(shí)現(xiàn)動(dòng)態(tài)的畫線:


?

    //主類

import javax.swing.*;

import java.awt.event.*;



public class  FrameDraw extends JFrame// implements MouseListener

{





	private DrawPanel panel=null;



	public FrameDraw(){



	panel=new DrawPanel();

	this.add(panel);

	this.setVisible(true);

	this.setSize(300,300);

	

	}



	public static void main(String[] args) 

	{

		new FrameDraw();

	

	}

}


  


調(diào)用的類:

?

?

    import javax.swing.*;

import java.awt.*;

import java.awt.event.*;



public class  DrawPanel extends JPanel  implements MouseListener 

{





	static int x=0,x1=0,y=0,y1=0;



	public DrawPanel(){

		

		this.addMouseListener(this);

	

	}





	public void paint(Graphics g){

		

		super.paint(g);

		Image image=Toolkit.getDefaultToolkit().getImage("images/psu.jpg");

		g.drawImage(image,0,0,300,300,this);

		g.drawLine(x,y,x1,y1);

	}





	public void mouseClicked(MouseEvent e){

		

		//獲取起點(diǎn)坐標(biāo)

	if(e.getButton()==MouseEvent.BUTTON3){		

	 x=e.getX();

	 y=e.getY();

	//label.setText("鼠標(biāo)點(diǎn)擊的位置  啟動(dòng)坐標(biāo):"+"  "+"x...."+x+"y...."+y);

	System.out.println("x..."+x+"...."+y);

		}







		//獲取終點(diǎn)坐標(biāo)

	if(e.getButton()==MouseEvent.BUTTON1){



		 x1=e.getX();

		 y1=e.getY();

		System.out.println("終點(diǎn)的坐標(biāo)..."+x1+"..."+y1);

		

		//當(dāng)左擊的時(shí)候,進(jìn)行連線

		if(y>=0||x>=0)

		{

			this.repaint();

			this.validate();

		}

		else

			System.out.println("數(shù)據(jù)出錯(cuò)。。。");



		}

	}



	public void mouseEntered(MouseEvent e){

	}

	public void mouseExited(MouseEvent e){

	

	}

	

	public void mousePressed(MouseEvent e){

	}



	public void mouseReleased(MouseEvent e){

	

	}





	public static void main(String[] args) {

	new DrawPanel();

	

	}



}


  


?



?

java 中paint .repaint.update


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論