タイトル | : プログラムの制御について |
記事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
|