d:id:pmint:20080226:p2の関連記事。
はいヽ(´ー`)ノ「模範解答」
何かをする模範的コード(Visual Basic)
VERSION 5.00 Begin VB.Form Form1 Caption = "Form1" ClientHeight = 8535 ClientLeft = 105 ClientTop = 390 ClientWidth = 10275 LinkTopic = "Form1" ScaleHeight = 15.055 ScaleMode = 7 'センチメートル ScaleWidth = 18.124 StartUpPosition = 3 'Windows の既定値 End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Private Sub Form_Paint() Dim intX As Integer, intY As Integer, lngColor As Long Dim intPX(3) As Integer, intPY(3) As Integer Dim intX0 As Integer, intX1 As Integer, intY0 As Integer, intY1 As Integer, intProcX0 As Integer, intProcY0 As Integer, intProcX1 As Integer, intProcY1 As Integer Dim intOldX As Integer, intOldY As Integer, intTime As Integer Dim IntIndex As Integer Me.DrawWidth = 1 For intX = 0 To 1000 Step 1 lngColor = IIf((intX Mod 100 = 0), RGB(160, 160, 160), RGB(224, 224, 224)) Me.Line (intX, 0)-(intX, 1000), lngColor Next intX For intY = 0 To 1000 Step 1 lngColor = IIf((intY Mod 100 = 0), RGB(160, 160, 160), RGB(224, 224, 224)) Me.Line (0, intY)-(1000, intY), lngColor Next intY Me.Line (0, 200)-(1000, 200), RGB(96, 96, 96) Me.Line (200, 0)-(200, 1000), RGB(96, 96, 96) intPX(0) = 2: intPY(0) = 2 intPX(1) = 3: intPY(1) = 4 intPX(2) = 6: intPY(2) = 3 intPX(3) = 7: intPY(3) = 1 Me.DrawWidth = 7 For IntIndex = 0 To 3 Step 1 Me.PSet (intPX(IntIndex), intPY(IntIndex)), vbBlue Next IntIndex Me.DrawWidth = 1 Me.Line (intPX(1), intPY(1))-(intPX(2), intPY(2)), vbBlue intX0 = intPX(1): intY0 = intPY(1) intX1 = intPX(2): intY1 = intPY(2) intProcX0 = (intPX(2) - intPX(0)) / 2: intProcY0 = (intPY(2) - intPY(0)) / 2 intProcX1 = (intPX(3) - intPX(1)) / 2: intProcY1 = (intPY(3) - intPY(1)) / 2 intX = 0: intY = 0 For intTime = 0 To 3 Step 0.1 intOldX = intX intOldY = intY intX = (2 * intX0 - 2 * intX1 + intProcX0 + intProcX1) * (intTime ^ 3) + (-3 * intX0 + 3 * intX1 - 2 * intProcX0 - intProcX1) * (intTime ^ 2) + intProcX0 * intTime + intX0 intY = (2 * intY0 - 2 * intY1 + intProcY0 + intProcY1) * (intTime ^ 3) + (-3 * intY0 + 3 * intY1 - 2 * intProcY0 - intProcY1) * (intTime ^ 2) + intProcY0 * intTime + intY0 If Not ((intOldX = 0 And intOldY = 0) Or (intX = 0 And intY = 0)) Then Me.DrawWidth = 3 Me.PSet (intX, intY), vbRed Me.DrawWidth = 1 Me.Line (intOldX, intOldY)-(intX, intY), vbBlack End If Next intTime End Sub