タイトル | : ピクチャーボックスへの再描画 |
記事No | : 8617 |
投稿日 | : 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
|