Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
クラスの実装の仕方
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9346#CommentId12869
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
H_K
 (社会人)
投稿日時
2009/9/15 20:21:46
八王子5517さん、この前の書き込みの後、とりあえずクラスを作らずペイントで描いたらどうなるかやってみました。講座のサンプル以外自分でクラスを作ったことがないので、クラスの方はこれからです。
AutoGraphics メソッドだと前描いたのが残っているのに、paint イベントだと毎回クリアされちゃうんですね。細かい修正が必要でした。
これだと元々の講座のサンプルのようにピクチャーボックスを3つ使った方がよかったかもしれません。
サイコロ描画の部分だけ抜き出してみました。長くてすみません。
[CODE]
Public Class Form1
Dim Rnd As New Random
Dim watch As New Stopwatch
Dim Mydice(2) As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Panel1の中にPictureBox1を配置。位置は適当に
'他にButton1とlabel1, タイマーが3つ
Panel1.Size = New Size(259, 119)
Panel1.BorderStyle = BorderStyle.Fixed3D
Panel1.BackColor = Color.FromArgb(0, 192, 0)
PictureBox1.Size = New Size(221, 61)
'最初はピンゾロ表示
For i As Integer = 0 To 2
Mydice(i) = 1
Next
PictureBox1.Invalidate()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
watch.Reset()
watch.Start()
Timer1.Interval = 20
Timer2.Interval = 20
Timer3.Interval = 20
Timer1.Start()
Timer2.Start()
Timer3.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'1秒たったら表示をスローに
Static tcount As Integer = 50
If watch.Elapsed.Seconds >= 1 Then
tcount += 50
Timer1.Interval = tcount
End If
'インターバルが500になったら表示決定
If tcount >= 500 Then
Timer1.Stop()
tcount = 50
Label1.Text = "チン"
End If
'目をランダムに表示
Mydice(0) = Rnd.Next(1, 7)
PictureBox1.Invalidate()
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
'2秒たったら表示をスローに
Static tcount As Integer = 50
If watch.Elapsed.Seconds >= 2 Then
tcount += 50
Timer2.Interval = tcount
End If
If tcount >= 500 Then
Timer2.Stop()
tcount = 50
Label1.Text = "チンチロ"
End If
Mydice(1) = Rnd.Next(1, 7)
PictureBox1.Invalidate()
End Sub
Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
Static tcount As Integer = 50
'3秒たったら表示をスローに
If watch.Elapsed.Seconds >= 3 Then
tcount += 50
Timer3.Interval = tcount
End If
Mydice(2) = Rnd.Next(1, 7)
PictureBox1.Invalidate()
If tcount >= 500 Then
Timer3.Stop()
tcount = 50
Label1.Text = "チンチロリ~ン"
End If
End Sub
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
For i As Integer = 0 To 2
SaikoroDraw(Mydice(i), i, e.Graphics)
Next
End Sub
[/code]
続く