none
[VB 2005]避免PictureBox的paint事件佔用太多系統資源 RRS feed

  • 問題

  •  

    各位老師好

    把用Timer設定時間,然後去抓取數據,再把數據陸陸續續加到陣列裡面.然後再用陣列丟到Picturebox的paint事件裡面去顯示

    這個已經是我現在在用的方法了

     

    但是我發現給paint事件的數值陣列大小越大時,會影響到系統取樣的效能

    也就是例如我今天的數值有1萬個數據

    1萬個數據每0.1秒在picturebox內paint一次,應該是會嚴重影響到系統的效能

     

    我想請問一下,除了我目前用的方法外

    還有哪種方法可以實現這個但是又不傷效能的?

     

     

     

    謝謝

    2007年12月13日 下午 03:02

解答

  • 公告裡面就有...

    關於VB2005資源分享

     

    2007年12月13日 下午 03:44
    版主
  • HI,

     

    您可以在收到Timer的Tick事件時利用以下的語法直接繪製內容到PictureBox控制項, 只要在整個PictureBox需要重繪時才利用Paint事件繪出所有的內容, 就不會越來越慢了

     

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Dim r As New Random

            Dim g As Graphics = Graphics.FromHwnd(PictureBox1.Handle)
            g.DrawEllipse(Pens.Blue, r.Next(0, 201), r.Next(0, 201), 10, 10)
        End Sub

     

    tihs

    2007年12月14日 上午 02:59

所有回覆

  • 公告裡面就有...

    關於VB2005資源分享

     

    2007年12月13日 下午 03:44
    版主
  • HI,

     

    您可以在收到Timer的Tick事件時利用以下的語法直接繪製內容到PictureBox控制項, 只要在整個PictureBox需要重繪時才利用Paint事件繪出所有的內容, 就不會越來越慢了

     

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Dim r As New Random

            Dim g As Graphics = Graphics.FromHwnd(PictureBox1.Handle)
            g.DrawEllipse(Pens.Blue, r.Next(0, 201), r.Next(0, 201), 10, 10)
        End Sub

     

    tihs

    2007年12月14日 上午 02:59
  •  

    知道了

     

    謝謝

     

    我來試試看

    2007年12月20日 上午 08:33