討論區快速選單
知識庫快速選單
傑米的攝影旅遊筆記 討論區最近新進100則主題 Top1安全軟體開發知識-CSSLP
[ 回上頁 ] [ 討論區發言規則 ]
有關vb6作動畫閃爍問題?
更改我的閱讀文章字型大小
作者 : purindog(仔仔)
[ 貼文 24 | 人氣 93 | 評價 100 | 評價/貼文 4.17 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/5/31 下午 10:29:58
不好意思~請問一下~
最近在做圖片動畫顯示~是GIF透明背景圖檔~
因PictureBox控件無法顯示透明背景圖(背景會有顏色無法呈現去背狀態...還是說可以用~只是我不會用 )

所以我使用image控件...但是做出來的動畫~圖片在更換時~會有閃爍的感覺..
請問有辦法解決嗎 ??

以下是我的程式碼~~謝謝~~

Dim x As Integer

Private Sub Form_Load()
Timer1.Interval = 300
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
x = x + 1
If x Mod 4 = 3 Then Image1.Picture = LoadPicture("1.gif")
If x Mod 4 = 2 Then Image1.Picture = LoadPicture("2.gif")
If x Mod 4 = 1 Then Image1.Picture = LoadPicture("3.gif")
If x Mod 4 = 0 Then Image1.Picture = LoadPicture("4.gif")
End Sub


我知道使用PictureBox可以使用以下方法解決...但是我的圖片背景會變黑色的..有辦法去背嗎?謝謝~~
BufferPic = LoadPicture("1.gif")
picture1.PaintPicture BufferPic.Picture, 0, 0
Form1.Picture = picture1.Image
作者 : qazujm(joe) Visual Basic卓越專家C#優秀好手貼文超過1000則
[ 貼文 1493 | 人氣 2524 | 評價 8940 | 評價/貼文 5.99 | 送出評價 90 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/6/1 上午 09:55:11
>我知道使用PictureBox可以使用以下方法解決...但是我的圖片背景會變黑色的..有辦法去背嗎?謝謝~~
>BufferPic = LoadPicture("1.gif")
>picture1.PaintPicture BufferPic.Picture, 0, 0
>Form1.Picture = picture1.Image

picture1.PaintPicture BufferPic.Picture, BufferPic.Left, BufferPic.Top, BufferPic.Width, BufferPic.Height

應該是這樣用吧!或者您把四個圖先放到四個Image,設為隱藏,Image1.Picture = 您要的Image.Picture,是否可行呢...
作者 : spainpollo(班班西) 貼文超過200則
[ 貼文 351 | 人氣 215 | 評價 1030 | 評價/貼文 2.93 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/6/1 下午 03:44:25
沒有考慮圖檔載入的時間
早期的GAME(APPLE II 有點早..)
是以2個圖切換的方式處理

定2個control
一前A(可視)一後B(不可視)
顯示A時載入B
時間到隱藏A顯示B載入A
循環

用在VB效果?試一下吧
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/6/1 下午 05:35:42
要在表單 做透空動畫 不建議使用.gif來做,因為vb6未完全支援所有特性~
單圖透空可以用 TransparentBlt ,可以不用另建 遮罩圖!
作者 : purindog(仔仔)
[ 貼文 24 | 人氣 93 | 評價 100 | 評價/貼文 4.17 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/6/1 下午 07:25:51
qazujm(joe) & spainpollo(班班西)你們好~~
如果使用你們的方法...如果我圖很多的話...那不就要很多image控件才行了@@

168(阿戊)你好~
謝謝你~你的方法我會試試~~
作者 : qazujm(joe) Visual Basic卓越專家C#優秀好手貼文超過1000則
[ 貼文 1493 | 人氣 2524 | 評價 8940 | 評價/貼文 5.99 | 送出評價 90 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/6/1 下午 08:02:19
>如果使用你們的方法...如果我圖很多的話...那不就要很多image控件才行了@@

更新SP6,設定使用元件,Microsoft Windows Common Control 6.0(SP6),ImageList,試試囉...
作者 : spainpollo(班班西) 貼文超過200則
[ 貼文 351 | 人氣 215 | 評價 1030 | 評價/貼文 2.93 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/6/2 上午 09:28:27

>qazujm(joe) & spainpollo(班班西)你們好~~
>如果使用你們的方法...如果我圖很多的話...那不就要很多image控件才行了@@

2個交叉使用

>
>168(阿戊)你好~
>謝謝你~你的方法我會試試~~
>
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/6/2 下午 05:39:21
>qazujm(joe) & spainpollo(班班西)你們好~~
>如果使用你們的方法...如果我圖很多的話...那不就要很多image控件才行了@@

'也可以完全不用image 或 imagelist ~
Dim a As New Collection, k As Integer
Private Sub Form_Load()
  For i = 0 To 1
     a.Add LoadPicture(i & ".gif"), "a" & i '將圖片讀入集合
  Next i
  Timer1.Interval = 1000
  Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
  k = (k + 1) Mod 2
  Form1.Picture = a.Item("a" & k)
End Sub
作者 : spainpollo(班班西) 貼文超過200則
[ 貼文 351 | 人氣 215 | 評價 1030 | 評價/貼文 2.93 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/6/3 下午 04:02:51
程式大約像這樣
Dim bSW As Boolean
Dim lSeq as Long

Private Sub Form_Load()
bSW=true
lSeq=100001
imgTop.Picture=LoadPicture("00001.gif")

Timer1.Interval = 300
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
lSeq=lSeq+1
If bSW Then
   imgTop.Visible = True
   imgBottom.Picture = LoadPicture("c:\temp\" & Right(Str(lSeq), 5) & ".jpg")
   bSW = False
   DoEvents
Else
   imgTop.Visible = False
   imgTop.Picture = LoadPicture("c:\temp\" & Right(Str(lSeq), 5) & ".jpg")
   bSW = True
   DoEvents
End If
End Sub
*****************
另外比較重要的
如果我沒記錯的話
電視每秒要30frame(視覺暫留1/16秒)
所以Timer1.Interval 要33以下
但不幸的是Timer 1/18秒檢查一次....
所以只能每秒18frame
Timer1.Interval=56
試試
作者 : spainpollo(班班西) 貼文超過200則
[ 貼文 351 | 人氣 215 | 評價 1030 | 評價/貼文 2.93 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/6/3 下午 04:14:15
不能編輯XD
===========
好像應該去尾..
>Timer1.Interval=56
Timer1.Interval=55

如果載入太慢(大於1/18)
就要另外處理了!!
作者 : 168(阿戊) Visual Basic一代宗師貼文超過2000則
[ 貼文 2957 | 人氣 7614 | 評價 11710 | 評價/貼文 3.96 | 送出評價 99 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/6/3 下午 04:26:01
....前面不是有提供預讀的方法了...一一"
作者 : spainpollo(班班西) 貼文超過200則
[ 貼文 351 | 人氣 215 | 評價 1030 | 評價/貼文 2.93 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/6/3 下午 05:25:08

>....前面不是有提供預讀的方法了...一一'

這是發文者的問題
不知他的圖片總量跟大小
一次載入有一次載入考慮的問題
順序載入有順序載入考慮的問題
(非同步載入?)

只是他指的閃爍或許只是顯示頻率的問題
留給發文者思考吧!

 板主 : 小樓
 > Visual Basic 6.0/VBA - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual Basic 6.0/VBA - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual Basic 6.0/VBA
1 阿戊 10670 
2 小樓 8650 
3 Jones 5270 
4 水瓶天賞 2340 
5 joe 2200 
6 史努比 1940 
7 阿呆紅 1440 
8 tt's 1250 
9 青衫 1150 
10 羅啟章 1020 
Visual Basic 6.0/VBA
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2014 程式設計俱樂部 http://www.programmer-club.com.tw/
0.15625