Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
クラスの実装の仕方
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9346#CommentId12853
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
H_K
 (社会人)
投稿日時
2009/9/13 04:38:24
長文です。ごめんなさい。(2008 Express Editionを使用しています。)
VB中学校初級講座 2章第14回の実技「ちんちろりん」をちょっとだけ改造して、画像を読み込むのではなく、1章で習った円や四角を描く方法でやってみました。PictureBox1を張り付けて、第2回で紹介されているAutoGraphicsを使っています。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'最初はピンゾロ表示
For i As Integer = 1 To 3
SaikoroDraw(1, i) '引数:目,場所(=左から1,2,3)
Next
略
End Sub
Private Sub SaikoroDraw(ByVal deme As Integer, ByVal x As Integer)
x -= 1 'Pictureboxの座標は0からなので-1
Select Case deme
Case 1
SaikoroDraw1(x)
Case 2
SaikoroDraw2(x)
Case 3
SaikoroDraw3(x)
Case 4
SaikoroDraw4(x)
Case 5
SaikoroDraw5(x)
Case 6
SaikoroDraw6(x)
End Select
End Sub
Private Sub SaikoroDraw1(ByVal x As Integer)
Dim g As Graphics = AutoGraphics(PictureBox1)
g.DrawRectangle(Pens.Black, 0 + x * 80, 0, 60, 60)
g.FillRectangle(Brushes.White, 1 + x * 80, 1, 58, 58)
g.DrawEllipse(Pens.Black, 25 + x * 80, 25, 10, 10)
g.FillEllipse(Brushes.Red, 25 + x * 80, 25, 10, 10)
End Sub
Private Sub SaikoroDraw2(ByVal x As Integer)
Dim g As Graphics = AutoGraphics(PictureBox1)
g.FillRectangle(Brushes.White, 1 + x * 80, 1, 58, 58)
g.FillEllipse(Brushes.Black, 12 + x * 80, 12, 10, 10)
g.FillEllipse(Brushes.Black, 38 + x * 80, 38, 10, 10)
End Sub
Private Sub SaikoroDraw3(ByVal x As Integer)
Dim g As Graphics = AutoGraphics(PictureBox1)
SaikoroDraw2(x)
g.FillEllipse(Brushes.Black, 25 + x * 80, 25, 10, 10)
End Sub
Private Sub SaikoroDraw4(ByVal x As Integer)
Dim g As Graphics = AutoGraphics(PictureBox1)
SaikoroDraw2(x)
g.FillEllipse(Brushes.Black, 38 + x * 80, 12, 10, 10)
g.FillEllipse(Brushes.Black, 12 + x * 80, 38, 10, 10)
End Sub
Private Sub SaikoroDraw5(ByVal x As Integer)
Dim g As Graphics = AutoGraphics(PictureBox1)
SaikoroDraw4(x)
g.FillEllipse(Brushes.Red, 25 + x * 80, 25, 10, 10)
End Sub
Private Sub SaikoroDraw6(ByVal x As Integer)
Dim g As Graphics = AutoGraphics(PictureBox1)
SaikoroDraw4(x)
g.FillEllipse(Brushes.Black, 12 + x * 80, 25, 10, 10)
g.FillEllipse(Brushes.Black, 38 + x * 80, 25, 10, 10)
End Sub
'自動再描画
Private Function AutoGraphics(ByVal picSource As PictureBox) As Graphics
If picSource.Image Is Nothing Then
picSource.Image = New Bitmap(picSource.ClientRectangle.Width, picSource.ClientRectangle.Height)
End If
Return Graphics.FromImage(picSource.Image)
End Function
それでまぁ、考えていた事はできて満足していたのですが、第6章52回 実技4「オセロ」を見ると全然違う方法みたいです。
で、まねしてサイコロをクラスにして、
Dim MyDice As New dice
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
Mydice.Draw(e.Graphics)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'最初はピンゾロ表示
For i As Integer = 1 To 3
Mydice.SpotSet(1, i) '目を1に設定する?
Next
PictureBox1.Invalidate()
略
End Sub
Public Class dice
Public Sub Draw(ByVal g As Graphics)
End Sub
End Class
ここまでやってはたと手が止まってしまいました。オセロをよく読み返したり、4章の内容を読み返したりしてみたのですが、頭がこんがらがるばかりでどうしていいかわかりません。
どのように書いたらいいかご教授いただければ幸いです。