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

タイトル ピクチャーボックスへの再描画
投稿日: 2009/01/23(Fri) 09:44
投稿者GEN
開発環境:Microsoft VisualBasic2008 Express Edition
PC:DELL OPTIPLEX 755(CPU:Core2Duo 2.33GHz、MEM:1GB、OS:Windows Vista SP2)


VB6は数年使って測定用のソフトを何本か作っていましたが、
VB.NETにてはじめてソフトを作ることになり、下記のピクチャーボックスへの再描画コードでつまずいています。ご助言の程よろしくお願いいたします。
(最終目的は、測定器からデータが送られてくる毎にグラフ軸の再スケーリング)

目的は、ピクチャーボックス内に高速再描画をすることです。
再描画をする上で、
(1)ピクチャーボックスを画面外に持っていっても消えないようにしたい。
(2)再描画するときに表示内容が綺麗に表示させたい。
(3)できるだけ高速に再描画させたい。

(1)〜(3)を満足させたいのですが、これらを踏まえて

コードを考える工程で、下記の2点のコードをPictureBox1、PictureBox2で
実現したいのですが、どのようにコードを書いたらよろしいでしょうか?
・PictureBox1の処理終了後にPictureBox2のように画面外に持っていっても
 消えないようにしたい。
・PictureBox2の再描画をPictureBox1の処理のように高速にしたい。
 (※PictureBox1とPictureBox2の良い所だけをとったコードにしたい・・・)

'PictureBox:2個、Button:1個を配置してコマンドボタンを押してください。

Public Class Form1
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        PictureBox1.BackColor = ColorTranslator.FromWin32(Microsoft.VisualBasic.RGB(200, 200, 255))
        PictureBox2.BackColor = ColorTranslator.FromWin32(Microsoft.VisualBasic.RGB(200, 200, 255))
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '----------------------------------------------------------------------------------
        '●ピクチャーボックスを画面上から消すと消える描画     (PictureBox1)            |
        '----------------------------------------------------------------------------------
        Dim g1 As Graphics = PictureBox1.CreateGraphics
        Dim f1 As New Font("MS Pゴシック", 50)
        Dim i1 As Integer

        For i1 = 0 To 10000
            'PictureBox1.Image = Nothing '表示を初期化する
            g1.Clear(PictureBox1.BackColor)
            'Invalidate()
            Update()
            g1.DrawString(i1, f1, Brushes.Blue, 0, PictureBox1.Height / 2)
            'Application.DoEvents()
            'PictureBox1.Refresh()
        Next i1
        f1.Dispose()
        g1.Dispose()
        '----------------------------------------------------------------------------------


        '----------------------------------------------------------------------------------
        '●ピクチャーボックスを画面上から消しても消えない描画   (PictureBox2)         |
        '----------------------------------------------------------------------------------
        Dim g2 As Graphics
        Dim f2 As New Font("MS Pゴシック", 50)
        Dim i2 As Integer

        With PictureBox2
            .Image = New Bitmap(.Width, .Height)
            g2 = Graphics.FromImage(.Image)
        End With

        For i2 = 0 To 10000
            'PictureBox2.Image = Nothing '表示を初期化する
            g2.Clear(PictureBox1.BackColor)
            'Invalidate()
            'Update()
            g2.DrawString(i2, f2, Brushes.Blue, 0, PictureBox2.Height / 2)
            'Application.DoEvents()
            PictureBox2.Refresh()
        Next i2
        f2.Dispose()
        g2.Dispose()
        '----------------------------------------------------------------------------------
    End Sub

End Class

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

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