tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル ダブルバッファを使わないサンプル
投稿日: 2007/10/08(Mon) 14:58
投稿者魔界の仮面弁士
> (目的)フォームにピクチャーボックス1(300×300)が有ります。
> 「10ヶづつ緑の四角をバッファに描画した後、画像に転送させる」
> 等速で行いたい。出来れば自作のサブプロシージャから好きなタイミングで呼び出したい。

『等速で』という部分が気になりますが、そういった要件であれば、
「ダブルバッファ」も「OnPaint」も関係なく、こんな感じで良いのではないかと。


Public Class Form1
 Private rect(10) As Rectangle

 Private Sub DrawNext()
  Dim ran As New Random()
  For i As Integer = 0 To 10
   rect(i) = New Rectangle(ran.Next(300), ran.Next(300), 10, 10)
  Next
  PictureBox1.Invalidate()
 End Sub

 Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  PictureBox1.Size = New Size(300, 300)
  DrawNext()
 End Sub

 Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles PictureBox1.Paint
  Dim b As Brush = Brushes.Green
  Dim g As Graphics = e.Graphics
  For Each r As Rectangle In rect
   g.FillRectangle(b, r)
  Next
 End Sub

 Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  DrawNext()
 End Sub

 Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
  For n As Integer = 1 To 1000
   DrawNext()
   PictureBox1.Update()
  Next
 End Sub
End Class

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。