看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《catchtest (蕭雲)》之銘言: : 1.我想在picturebox或button的Image裡使用動態gif : 可是圖形卻不會動,我試過用一個計時器每0.1秒refresh一次 : 雖然可以跑,但是感覺很差,請問有其他簡單的方式嗎? 最簡單應該就這個方法了 @.@" .NET好像沒有可以直接放gif的控制項.. 倒是有比較 .NET 的做法.. 首先找個地方初始動畫, 例如在 Form_Load 裡.. ImageAnimator.Animate(Button1.Image, AddressOf OnFrameChange) ' 第一個參數是一個 Image, 例如果你的Button1.Image、Picture1.Image等等.. ' 第二個參數是一個你自己寫的副程式, 當frame改變時, 也就是換圖了, ' 他就會呼叫這個副程式.. ' 這個副程式只是一個最普通的even handler.. Public Sub OnFrameChange( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Button1.Invalidate() ' 這樣會讓button1把自己重繪 End Sub 這樣的做法會比較好, 因為gif並不是每0.1切換一個frame, 把計算何時該切換frame的事交給ImageAnimator, 時間到了就呼叫 OnFrameChange由我們自己重繪. : 2.我想使用實心的ProgressBar(因為某些需要) : 像是Office系列的ProgressBar就都是實心的 : CCleaner的ProgressBar也是實心的 : 可是vb.net的ProgressBar卻一定是block : 我找過所有屬性與網路資料都沒有用 : 請問有好方法嗎?難道要自己做一個ProgressBar? 恐怕沒有@.@" ProgressBar是有個Style可以設, 設成 Continuous 就是那種實心的樣式.. 可是那是適用於沒有開啟 Theme (也就是VisualStyle) 的時候.. (就是 Windows98/95 時代的介面..) CCleaner是比較早期的程式, 所以沒有打開VisualStyle.. Office系列(好像沒印像有看過ProgressBar)可能是用自訂元件吧.. 拜物物件導向之賜, 在VB.NET自己撰寫一個 ProgressBar不會太複雜 新增一個類別檔貼上以下程式, 重新編譯後就會出現在toolbox可以使用了~ 這只是一個簡單的雛型, 你可以在 OnPaint 裡撰寫符合你需求的ProgressBar Public Class MyProgressBar Inherits ProgressBar ' 繼承 ProgressBar Public Sub New() ' 設定使用者自己繪出 ProgressBar SetStyle(ControlStyles.AllPaintingInWmPaint Or _ ControlStyles.UserPaint, True) End Sub Protected Overrides Sub OnPaint(ByVal e As _ System.Windows.Forms.PaintEventArgs) Dim r As Rectangle = ClientRectangle Dim br As Rectangle = ClientRectangle r.Width = r.Width * Value / (Maximum - Minimum) e.Graphics.FillRectangle(SystemBrushes.Highlight, r) br.Height -= 1 br.Width -= 1 e.Graphics.DrawRectangle(SystemPens.ControlDarkDark, br) End Sub End Class -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.138.81 ※ 編輯: cole945 來自: 220.139.138.81 (06/30 08:02)
catchtest:感謝大大,我會去試試看的^^ 06/30 13:04