| | タイトル | : プログラムの制御について |  | 記事No | : 11442 |  | 投稿日 | : 2015/06/13(Sat) 16:51 |  | 投稿者 | : ゆきみち | 
 下記のプログラムで3秒間視標を呈示している最中に誤ってキーボタン(例えば、←↓↑→)を押すと次のキーイベントが作動してしまいます。3秒間視標を呈示している間だけは、何を押しても反応しない(プログラムが動かない)することは可能なのでしょうか?ご指導のほど宜しくお願い申し上げます。
 
 Public Class Form1
 Dim x, y, i As Single
 Dim a, b, c, d, f, h, k, r, s, w, qw As Single
 
 Dim BackColor_R, BackColor_G, BackColor_B As Short
 Dim RandoltColor_R, RandoltColor_G, RandoltColor_B As Short
 Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
 Dim q As Integer
 Timer1.Enabled = True
 
 
 q = e.KeyCode
 Dim g As Graphics = CreateGraphics()
 
 a = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
 b = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
 
 
 c = 11.6
 
 d = Math.Sqrt(a * a + b * b)
 f = c * 2.54
 h = 10 * f / d
 
 x = Me.ClientSize.Width \ 2
 y = Me.ClientSize.Height \ 2
 
 
 k = 6 * 10
 
 r = k / CSng(h)
 s = r * CSng(0.6)
 
 
 g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
 g.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
 
 
 Dim randoltoRing As New SolidBrush(Color.FromArgb(RandoltColor_R, RandoltColor_G, RandoltColor_B))
 Dim haikei As New SolidBrush(Color.FromArgb(BackColor_R, BackColor_G, BackColor_B))
 
 
 g.FillEllipse(randoltoRing, x - r, y - r, r * 2, r * 2)
 g.FillEllipse(haikei, x - s, y - s, s * 2, s * 2)
 
 
 g.SmoothingMode = Drawing2D.SmoothingMode.None
 g.PixelOffsetMode = Drawing2D.PixelOffsetMode.None
 
 
 s = 8
 w = Int(Rnd() * s) + 1
 
 If w = 1 Then
 g.FillRectangle(haikei, x + r * CSng(0.4), y - r * CSng(0.2), r * CSng(0.8), r * CSng(0.4))
 ElseIf w = 2 Then
 g.FillRectangle(haikei, x - r * CSng(1.2), y - r * CSng(0.2), r * CSng(0.8), r * CSng(0.4))
 ElseIf w = 3 Then
 g.FillRectangle(haikei, x - r * CSng(0.2), y + r * CSng(0.4), r * CSng(0.4), r * CSng(0.8))
 ElseIf w = 4 Then
 g.FillRectangle(haikei, x - r * CSng(0.2), y - r * CSng(1.2), r * CSng(0.4), r * CSng(0.8))
 End If
 
 
 Dim myPen2 As New Pen(Color.Red, 1)
 Dim rotatePoint As New PointF(CSng(x), CSng(y))
 
 
 Dim myMatrix As New Drawing2D.Matrix()
 myMatrix.RotateAt(45, rotatePoint, Drawing2D.MatrixOrder.Append)
 g.Transform = myMatrix
 
 If w = 5 Then
 g.FillRectangle(haikei, x - r * CSng(1.2), y - r * CSng(0.2), r * CSng(0.8), r * CSng(0.4))
 ElseIf w = 6 Then
 g.FillRectangle(haikei, x + r * CSng(0.4), y - r * CSng(0.2), r * CSng(0.8), r * CSng(0.4))
 ElseIf w = 7 Then
 g.FillRectangle(haikei, x - r * CSng(0.2), y + r * CSng(0.4), r * CSng(0.4), r * CSng(0.8))
 ElseIf w = 8 Then
 g.FillRectangle(haikei, x - r * CSng(0.2), y - r * CSng(1.2), r * CSng(0.4), r * CSng(0.8))
 End If
 
 g.Dispose()
 
 
 Timer1.Interval = 3000
 
 
 End Sub
 
 Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
 
 Dim v As Graphics = CreateGraphics()
 
 Dim haikei_kakusu As New SolidBrush(Color.FromArgb(BackColor_R, BackColor_G, BackColor_B))
 v.FillEllipse(haikei_kakusu, x - 2 * r, y - 2 * r, r * 2 * 2, r * 2 * 2)
 Timer1.Enabled = False
 v.Dispose()
 
 End Sub
 
 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
 BackColor_R = 255
 BackColor_G = 255
 BackColor_B = 255
 RandoltColor_R = 178
 RandoltColor_G = 100
 RandoltColor_B = 67
 
 Me.BackColor = Color.FromArgb(BackColor_R, BackColor_G, BackColor_B)
 
 Timer1.Enabled = True
 
 End Sub
 End Class
 
 |