單純用.net的技術(shù)來做非常麻煩,涉及到了大量的GUI繪圖工作,但這個(gè)偏偏還是基礎(chǔ)。所以建議用WPF來處理,雖然也比較麻煩,但要比GUI容易理解的多。
公司主營業(yè)務(wù):成都網(wǎng)站制作、做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出金門免費(fèi)做網(wǎng)站回饋大家。
而原理實(shí)際上都是一樣的。本質(zhì)上都是圖片的移動(dòng)。只不過移動(dòng)的那張圖片有變化。
譬如你要做一個(gè)沿直線跑步的小人。在起始的位置畫一個(gè)站立的人物圖,然后將圖片移動(dòng)到下一個(gè)位置,并把圖片換成邁出左腿并揮臂的圖;再將圖片移動(dòng)一下,繪制收左腿邁右腿的圖,一直下去。
說白了就是你需要將人物移動(dòng)的動(dòng)作分解,并在合適的位置上繪制出合適的圖,分解的越細(xì),動(dòng)畫的連貫性就越高。
其實(shí)就是制作動(dòng)畫,然后再把它用到游戲中
不是語言讓圖片動(dòng)起來的,而是圖片本身就能動(dòng),例如gif格式圖片本身就是動(dòng)畫。如果你講的是圖片在網(wǎng)頁上移動(dòng),而不是圖片本身內(nèi)容的動(dòng)作,那么不是vb.net的功能必須用java腳本來實(shí)現(xiàn)。
***怎樣讓移動(dòng)圖像顯示更快一些*** Hide Controls When Setting Properties to Avoid Multiple Repaints Every repaint is expensive. The fewer repaints Visual Basic must perform, the faster your application will appear. One way to reduce the number of repaints is to make controls invisible while you are manipulating them. For example, suppose you want to resize several list boxes in the Resize event for the form: Sub Form_Resize () Dim i As Integer, sHeight As Integer sHeight = ScaleHeight / 4 For i = 0 To 3 lstDisplay(i).Move 0, i * sHeight, _ ScaleWidth, sHeight Next End Sub This creates four separate repaints, one for each list box. You can reduce the number of repaints by placing all the list boxes within a picture box, and hiding the picture box before you move and size the list boxes. Then, when you make the picture box visible again, all of the list boxes are painted in a single pass: 在vb中用move方法移動(dòng)圖片時(shí),速度有些慢,當(dāng)圖片很大時(shí),這時(shí)可以用下面的方法: Sub Form_Resize () Dim i As Integer, sHeight As Integer picContainer.Visible = False picContainer.Move 0, 0, ScaleWidth, ScaleHeight sHeight = ScaleHeight / 4 For i = 0 To 3 lstDisplay(i).Move 0, i * sHeight, _ ScaleWidth, sHeight Next picContainer.Visible = True End Sub Note that this example uses the Move method instead of setting the Top and Left properties. The Move method sets both properties in a single operation, saving additional repaints.
給你提供一個(gè)思路,
你既然知道BITBLT,基礎(chǔ)不會(huì)太差的,我就簡單明了的說下.
從你的問題看,最簡單的方法,其實(shí)只需要一個(gè)picturebox.
然后定義一個(gè)4*3的Image數(shù)組img(3,2).橫4縱3.
img(0,0)裝入第一張圖片,
img(1,0)裝入第二張圖片,
img(3,0)不使用.
以此類推,img(3,1)也不使用,
####但是,img(3,2)雖然不裝入圖片,
####其功能卻和你思路中的"沒圖片的picturebox"相同.
我們可以定義兩個(gè)變量x
,
y
As
Integer
初始的時(shí)候x=3,y=2,應(yīng)該看出來了吧?這兩個(gè)變量用來保存空白image的位置,方便你移動(dòng)圖片.
有了這種結(jié)構(gòu),剩下的工作就很簡單了.
寫一個(gè)方法來處理按鍵消息.例如:
如果此時(shí)x=1,y=1,用戶按下了"上鍵",那么img(x,y)和Image(x,y-1)交換.然后y=y-1
如果此時(shí)x=1,y=1,用戶按下了"左鍵",那么img(x,y)和image(x-1,y)交換.然后x=x-1
其實(shí)就是移動(dòng)空白位置的方法.但是要注意,img(3,0),img(3,1),img(3,2)這三個(gè)特殊位置要做特殊處理.
最后,寫個(gè)for循環(huán),把img數(shù)組顯示到picturebox上面就可以了.
很簡單吧?不知道我說得是否清楚?
希望對(duì)你有所幫助.
窗體加一個(gè)timer,interval置為50,然后在timer事件中更改圖片的left和height就可以了。如
image1.left=image1.left+20
image1.height=image1.height+20