home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1996 August / VPR9608A.BIN / vpr_data / vb32 / vb4wm / vb4-4.cab / blanker.frm < prev    next >
Text File  |  1996-01-12  |  25KB  |  739 lines

  1. VERSION 4.00
  2. Begin VB.Form DemoForm 
  3.    BackColor       =   &H00000000&
  4.    Caption         =   "グラフィックス デモ"
  5.    ClientHeight    =   4425
  6.    ClientLeft      =   960
  7.    ClientTop       =   1965
  8.    ClientWidth     =   7470
  9.    BeginProperty Font 
  10.       name = "標準ゴシック"
  11.       charset         =   1
  12.       weight          =   700
  13.       size = 9
  14.       underline       =   0   'False
  15.       italic          =   0   'False
  16.       strikethrough   =   0   'False
  17. Bold = 0
  18.    EndProperty
  19.    ForeColor       =   &H00000000&
  20.    Height          =   5115
  21.    Icon            =   "BLANKER.frx":0000
  22.    Left            =   900
  23.    LinkMode        =   1  'ソース
  24.    LinkTopic       =   "Form1"
  25.    ScaleHeight     =   4425
  26.    ScaleWidth      =   7470
  27.    Top             =   1335
  28.    Width           =   7590
  29.    Begin VB.Timer Timer1 
  30.       Interval        =   1
  31.       Left            =   6960
  32.       Top             =   120
  33.    End
  34.    Begin VB.CommandButton cmdStartStop 
  35.       BackColor       =   &H00000000&
  36.       Caption         =   "デモ開始"
  37.       Default         =   -1  'True
  38.       Height          =   390
  39.       Left            =   240
  40.       TabIndex        =   0
  41.       Top             =   120
  42.       Width           =   1830
  43. BeginProperty Font
  44. name = "標準ゴシック"
  45. size = 9
  46. bold = 0 
  47. EndProperty
  48.    End
  49.    Begin VB.PictureBox picBall 
  50.       AutoSize        =   -1  'True
  51.       BackColor       =   &H00000000&
  52.       BorderStyle     =   0  'なし
  53.       ForeColor       =   &H00FFFFFF&
  54.       Height          =   480
  55.       Left            =   1800
  56.       Picture         =   "BLANKER.frx":030A
  57.       ScaleHeight     =   480
  58.       ScaleWidth      =   480
  59.       TabIndex        =   1
  60.       Top             =   720
  61.       Visible         =   0   'False
  62.       Width           =   480
  63. BeginProperty Font
  64. name = "標準ゴシック"
  65. size = 9
  66. bold = 0 
  67. EndProperty
  68.    End
  69.    Begin VB.Image imgMoon 
  70.       Height          =   480
  71.       Index           =   8
  72.       Left            =   6330
  73.       Picture         =   "BLANKER.frx":0614
  74.       Top             =   3765
  75.       Visible         =   0   'False
  76.       Width           =   480
  77.    End
  78.    Begin VB.Line linLineCtl 
  79.       BorderColor     =   &H00FF0000&
  80.       BorderWidth     =   5
  81.       Visible         =   0   'False
  82.       X1              =   240
  83.       X2              =   4080
  84.       Y1              =   2760
  85.       Y2              =   2760
  86.    End
  87.    Begin VB.Image imgMoon 
  88.       Height          =   480
  89.       Index           =   7
  90.       Left            =   5760
  91.       Picture         =   "BLANKER.frx":091E
  92.       Top             =   3720
  93.       Visible         =   0   'False
  94.       Width           =   480
  95.    End
  96.    Begin VB.Image imgMoon 
  97.       Height          =   480
  98.       Index           =   6
  99.       Left            =   5160
  100.       Picture         =   "BLANKER.frx":0C28
  101.       Top             =   3720
  102.       Visible         =   0   'False
  103.       Width           =   480
  104.    End
  105.    Begin VB.Image imgMoon 
  106.       Height          =   480
  107.       Index           =   5
  108.       Left            =   4560
  109.       Picture         =   "BLANKER.frx":0F32
  110.       Top             =   3720
  111.       Visible         =   0   'False
  112.       Width           =   480
  113.    End
  114.    Begin VB.Image imgMoon 
  115.       Height          =   480
  116.       Index           =   4
  117.       Left            =   3960
  118.       Picture         =   "BLANKER.frx":123C
  119.       Top             =   3720
  120.       Visible         =   0   'False
  121.       Width           =   480
  122.    End
  123.    Begin VB.Image imgMoon 
  124.       Height          =   480
  125.       Index           =   3
  126.       Left            =   3360
  127.       Picture         =   "BLANKER.frx":1546
  128.       Top             =   3720
  129.       Visible         =   0   'False
  130.       Width           =   480
  131.    End
  132.    Begin VB.Image imgMoon 
  133.       Height          =   480
  134.       Index           =   2
  135.       Left            =   2760
  136.       Picture         =   "BLANKER.frx":1850
  137.       Top             =   3720
  138.       Visible         =   0   'False
  139.       Width           =   480
  140.    End
  141.    Begin VB.Image imgMoon 
  142.       Height          =   480
  143.       Index           =   1
  144.       Left            =   2160
  145.       Picture         =   "BLANKER.frx":1B5A
  146.       Top             =   3720
  147.       Visible         =   0   'False
  148.       Width           =   480
  149.    End
  150.    Begin VB.Image imgMoon 
  151.       Height          =   480
  152.       Index           =   0
  153.       Left            =   1560
  154.       Picture         =   "BLANKER.frx":1E64
  155.       Top             =   3720
  156.       Visible         =   0   'False
  157.       Width           =   480
  158.    End
  159.    Begin VB.Shape shpClone 
  160.       BackColor       =   &H00000000&
  161.       BackStyle       =   1  '不透明
  162.       BorderColor     =   &H00FF0000&
  163.       FillColor       =   &H000000FF&
  164.       Height          =   1215
  165.       Index           =   0
  166.       Left            =   240
  167.       Top             =   720
  168.       Visible         =   0   'False
  169.       Width           =   1410
  170.    End
  171.    Begin VB.Shape Shape1 
  172.       Height          =   15
  173.       Left            =   960
  174.       Top             =   1080
  175.       Width           =   15
  176.    End
  177.    Begin VB.Menu mnuOption 
  178.       Caption         =   "オプション(&O)"
  179.       Begin VB.Menu mnuLineCtlDemo 
  180.          Caption         =   "ジャンプ ライン(&J)"
  181.          Checked         =   -1  'True
  182.       End
  183.       Begin VB.Menu mnuCtlMoveDemo 
  184.          Caption         =   "リバウンド(&B)"
  185.       End
  186.       Begin VB.Menu mnuImageDemo 
  187.          Caption         =   "月の満ち欠け(&S)"
  188.       End
  189.       Begin VB.Menu mnuShapeDemo 
  190.          Caption         =   "パレット(&M)"
  191.       End
  192.       Begin VB.Menu mnuPSetDemo 
  193.          Caption         =   "紙ふぶき(&C)"
  194.       End
  195.       Begin VB.Menu mnuLineDemo 
  196.          Caption         =   "十字砲火(&R)"
  197.       End
  198.       Begin VB.Menu mnuCircleDemo 
  199.          Caption         =   "虹の絨毯(&W)"
  200.       End
  201.       Begin VB.Menu mnuScaleDemo 
  202.          Caption         =   "カラーバー(&L)"
  203.       End
  204.       Begin VB.Menu sep1 
  205.          Caption         =   "-"
  206.       End
  207.       Begin VB.Menu mnuExit 
  208.          Caption         =   "終了(&X)"
  209.       End
  210.    End
  211. End
  212. Attribute VB_Name = "DemoForm"
  213. Attribute VB_Creatable = False
  214. Attribute VB_Exposed = False
  215. Option Explicit
  216. ' アニメーション フレームの軌跡を表す変数を宣言します。
  217. Dim Shared FrameNum
  218. ' 軌跡位置の X 座標と Y 座標を表す変数を宣言します。
  219. Dim Shared XPos
  220. Dim Shared YPos
  221. ' Do Loop のグラフィック ルーチンを停止する変数フラグを宣言します。
  222. Dim Shared DoFlag
  223. ' コントロールの移動を表す変数を宣言します。
  224. Dim Shared Motion
  225. ' 色の変数を宣言します。
  226. Dim R
  227. Dim G
  228. Dim B
  229.  
  230. Private Sub CircleDemo()
  231.     ' ローカル変数を宣言します。
  232.     Dim Radius
  233.     ' ランダムな RGB 色を作成します。
  234.     R = 255 * Rnd
  235.     G = 255 * Rnd
  236.     B = 255 * Rnd
  237.     ' フォームの中央に円の中央を位置付けます。
  238.     XPos = ScaleWidth / 2
  239.     YPos = ScaleHeight / 2
  240.     ' ゼロからフォームの高さの半分までの半径を作ります。
  241.     Radius = ((YPos * 0.9) + 1) * Rnd
  242.     ' フォーム上に円を描きます。
  243.     Circle (XPos, YPos), Radius, RGB(R, G, B)
  244. End Sub
  245.  
  246. Private Sub cmdStartStop_Click()
  247. ' ローカル変数を宣言します。
  248. Dim UnClone
  249. Dim MakeClone
  250. Dim X1
  251. Dim Y1
  252.     Select Case DoFlag
  253.         Case True
  254.             cmdStartStop.Caption = "デモ開始"
  255.             DoFlag = False
  256.             mnuOption.Enabled = True
  257.             If mnuCtlMoveDemo.Checked = True Then
  258.                 ' 飛び跳ねるグラフィックを再び非表示状態にします。
  259.                 picBall.Visible = False
  260.             ElseIf mnuLineDemo.Checked = True Then
  261.                 ' フォーム上の線画を消去します。
  262.                 Cls
  263.             ElseIf mnuShapeDemo.Checked = True Then
  264.                 ' 動的にロードされたシェイプ コントロールをすべて取り除きます。
  265.                 For UnClone = 1 To 20
  266.                     Unload shpClone(UnClone)
  267.                 Next UnClone
  268.                 ' フォームの背景色を黒にリセットします。
  269.                 DemoForm.BackColor = QBColor(0)
  270.                 ' フォームをリフレッシュして、色の変更を有効にします。
  271.                 Refresh
  272.             ElseIf mnuPSetDemo.Checked = True Then
  273.                 ' 紙ふぶきをフォームから取り除きます。
  274.                 Cls
  275.             ElseIf mnuLineCtlDemo.Checked = True Then
  276.                 ' ライン コントロールを再び非表示状態にします。
  277.                 linLineCtl.Visible = False
  278.                 ' 線の非表示後に残るピクセルを取り除きます。
  279.                 Cls
  280.             ElseIf mnuImageDemo.Checked = True Then
  281.                 ' 飛び跳ねるグラフィックを再び非表示状態にします。
  282.                 imgMoon(0).Visible = False
  283.             ElseIf mnuScaleDemo.Checked = True Then
  284.                 ' フォームをクリアします。
  285.                 Cls
  286.                 ' フォームを既定のスケールに戻します。
  287.                 Scale
  288.             ElseIf mnuCircleDemo.Checked = True Then
  289.                 ' フォームから円を取り除きます。
  290.                 Cls
  291.             End If
  292.         Case False
  293.             cmdStartStop.Caption = "デモ停止"
  294.             DoFlag = True
  295.             mnuOption.Enabled = False
  296.             If mnuCtlMoveDemo.Checked = True Then
  297.                 ' 飛び跳ねるグラフィック (ピクチャ ボックス コントロール) を表示状態にします。
  298.                 picBall.Visible = True
  299.                 ' 飛び跳ねるグラフィックの最初の動きをランダムに確定します。
  300.                 ' 設定値は 1 から 4 までです。
  301.                 ' Motion 変数は Do Loop ルーチンの実行部分を決定します。
  302.                 Motion = Int(4 * Rnd + 1)
  303.             ElseIf mnuLineDemo.Checked = True Then
  304.                 ' 乱数ジェネレータを初期化します。
  305.                 Randomize
  306.                 ' 線の幅を設定します。
  307.                 DrawWidth = 2
  308.                 ' 最初の X 座標と Y 座標をフォーム上のランダムな位置に設定します。
  309.                 X1 = Int(DemoForm.Width * Rnd + 1)
  310.                 Y1 = Int(DemoForm.Height * Rnd + 1)
  311.             ElseIf mnuShapeDemo.Checked = True Then
  312.                 ' フォーム上に 20 個のシェイプ コントロールからなるコントロール配列を動的にロードします。
  313.                 For MakeClone = 1 To 20
  314.                     Load shpClone(MakeClone)
  315.                 Next MakeClone
  316.             ElseIf mnuPSetDemo.Checked = True Then
  317.                 ' 紙ふぶきの厚みを設定します。
  318.                 DrawWidth = 5
  319.             ElseIf mnuLineCtlDemo.Checked = True Then
  320.                 ' ライン コントロールを表示状態にします。
  321.                 linLineCtl.Visible = True
  322.                 ' 表示される線の太さを設定します。
  323.                 DrawWidth = 7
  324.             ElseIf mnuImageDemo.Checked = True Then
  325.                 ' 飛び跳ねるグラフィック (イメージ コントロール) を表示状態にします。
  326.                 imgMoon(0).Visible = True
  327.                 ' 最初のアニメーション フレームを設定します。
  328.                 FrameNum = 0
  329.                 ' 飛び跳ねるグラフィックの最初の動きをランダムに決定します。
  330.                 ' 設定値は 1 から 4 までです。
  331.                 ' Motion 変数は Do Looop ルーチンの実行部分を決定します。
  332.                 Motion = Int(4 * Rnd + 1)
  333.             ElseIf mnuScaleDemo.Checked = True Then
  334.                 ' 乱数ジェネレータを初期化します。
  335.                 Randomize
  336.                 ' ボックスが重なり合わないようにボックス アウトラインの幅を設定します。
  337.                 DrawWidth = 1
  338.                 ' X 座標の値をフォームの左端に設定します。
  339.                 ' 最初のボックスの X 座標を 1 に、2 番目のボックスの X 座標を 2 とし、
  340.                 ' 以下同様に設定します。
  341.                 ScaleLeft = 1
  342.                 ' フォームの上端の Y 座標を 10 に設定します。
  343.                 ScaleTop = 10
  344.                 ' フォームの幅の単位数を 3 から 12 の間にランダムに設定します。
  345.                 ' これにより、ルーチンが開始するたびに
  346.                 ' 異なる数のボックスが描かれることになります。
  347.                 ScaleWidth = Int(13 * Rnd + 3)
  348.                 ' フォームの高さの単位数を -10 に設定します。これにより
  349.                 ' ボックスの高さが 0 から 10 までの間で変化し、
  350.                 ' Y 座標がフォームの下端から始まることになります。
  351.                 ScaleHeight = -10
  352.             ElseIf mnuCircleDemo.Checked = True Then
  353.                 ' 円のアウトラインの幅を設定します。
  354.                 DrawWidth = 1
  355.                 ' 描く線を鎖線に設定します。
  356.                 DrawStyle = vbDash
  357.                 ' 描く線を XOR pen モードに設定します。ペンと表示色のどちらか
  358.                 ' 一方だけに含まれている色を組み合わせます。
  359.                 DrawMode = vbXorPen
  360.             End If
  361.     End Select
  362. End Sub
  363.  
  364. Private Sub CtlMoveDemo()
  365.     Select Case Motion
  366.     Case 1
  367.         ' Move メソッドを使って、グラフィックを左上に 20 twip ずつ移動します。
  368.         picBall.Move picBall.Left - 20, picBall.Top - 20
  369.         ' グラフィックがフォームの左端に達したら、右上に方向を変更します。
  370.         If picBall.Left <= 0 Then
  371.             Motion = 2
  372.         ' グラフィックがフォーム上端に達したら、左下に方向を変更します。
  373.         ElseIf picBall.Top <= 0 Then
  374.             Motion = 4
  375.         End If
  376.     Case 2
  377.         ' グラフィックを右上に 20 twip ずつ移動します。
  378.         picBall.Move picBall.Left + 20, picBall.Top - 20
  379.         ' グラフィックがフォームの右端に達したら、左上に方向を変更します。
  380.         ' フォームの幅からグラフィックの幅を差し引いて、
  381.         ' フォームの右端を調べます。
  382.         If picBall.Left >= (DemoForm.Width - picBall.Width) Then
  383.             Motion = 1
  384.         ' グラフィックがフォームの上端に達したら、右下に方向を変更します。
  385.         ElseIf picBall.Top <= 0 Then
  386.             Motion = 3
  387.         End If
  388.     Case 3
  389.         ' グラフィックを右下に 20 twip ずつ移動します。
  390.         picBall.Move picBall.Left + 20, picBall.Top + 20
  391.         ' グラフィックがフォームの右端に達したら、左下に方向を変更します。
  392.         If picBall.Left >= (DemoForm.Width - picBall.Width) Then
  393.             Motion = 4
  394.         ' グラフィックがフォームの下端に達したら、右上に方向を変更します。
  395.         ' フォームの高さからグラフィックの高さを差し引き、さらにそこから
  396.         ' 680 twip (タイトル バーとメニューバーの高さ) を差し引いてフォームの下端を調べます。
  397.         ElseIf picBall.Top >= (DemoForm.Height - picBall.Height) - 680 Then
  398.             Motion = 2
  399.         End If
  400.     Case 4
  401.         ' グラフィックを左下に 20 twip ずつ移動します。
  402.         picBall.Move picBall.Left - 20, picBall.Top + 20
  403.         ' グラフィックがフォームの左端に達したら、右下に方向を変更します。
  404.         If picBall.Left <= 0 Then
  405.             Motion = 3
  406.         ' グラフィックがフォームの下端に達したら、左上に方向を変更します。
  407.         ElseIf picBall.Top >= (DemoForm.Height - picBall.Height) - 680 Then
  408.             Motion = 1
  409.         End If
  410.     End Select
  411. End Sub
  412.  
  413. Private Sub Delay()
  414.     Dim Start
  415.     Dim Check
  416.     Start = Timer
  417.     Do Until Check >= Start + 0.15
  418.         Check = Timer
  419.     Loop
  420. End Sub
  421.  
  422. Private Sub Form_Load()
  423.     DoFlag = False
  424. End Sub
  425.  
  426. Private Sub Form_Resize()
  427.     If mnuScaleDemo.Checked = True And DemoForm.WindowState = 0 Then
  428.         ' 乱数ジェネレータを初期化します。
  429.         Randomize
  430.         ' ボックスが重ならないようにボックス アウトラインの幅を狭く設定します。
  431.         DrawWidth = 1
  432.         ' フォームの左端の X 座標を 1 に設定します。
  433.         ' こうすれば、ボックスの位置の設定が容易になります。
  434.         ' 最初のボックスの X 座標は 1、そして 2 番目のボックスの X 座標は 2 となり、
  435.         ' 以下同様に続きます。
  436.         ScaleLeft = 1
  437.         ' フォームの上端の Y 座標を 10 に設定します。
  438.         ScaleTop = 10
  439.         ' フォームの幅の単位数を 3 から 12 に間にランダムに設定します。
  440.         ' これにより、ルーチンが開始するたびに
  441.         ' 異なる数のボックスが描かれることになります。
  442.         ScaleWidth = Int(13 * Rnd + 3)
  443.         ' フォームの高さの単位数を -10 に設定します。
  444.         ' これには 2 つの効果があります。
  445.         ' 1 つは、ボックスの高さが 0 から 10 までの間で変化することであり、
  446.         ' もう 1 つは、負の値を設定することにより、フォームの上端からではなく
  447.         ' 下端から Y 座標が始まることです。
  448.         ScaleHeight = -10
  449.     End If
  450. End Sub
  451.  
  452. Private Sub Form_Unload(Cancel As Integer)
  453.     End
  454. End Sub
  455.  
  456. Private Sub ImageDemo()
  457.     Select Case Motion
  458.     Case 1
  459.         ' Move メソッドを使って、グラフィックを左上に 100 twip ずつ移動します。
  460.         imgMoon(0).Move imgMoon(0).Left - 100, imgMoon(0).Top - 100
  461.         ' アニメーションを次のフレームに更新します。
  462.         IncrFrame
  463.         ' グラフィックがフォームの左端に達したら、右上に方向を変更します。
  464.         If imgMoon(0).Left <= 0 Then
  465.             Motion = 2
  466.         ' グラフィックがフォームの上端に達したら、左下に方向を変更します。
  467.         ElseIf imgMoon(0).Top <= 0 Then
  468.             Motion = 4
  469.         End If
  470.     Case 2
  471.         ' グラフィックを右上に 100 twip ずつ移動します。
  472.         imgMoon(0).Move imgMoon(0).Left + 100, imgMoon(0).Top - 100
  473.         ' アニメーションを次のフレームに更新します。
  474.         IncrFrame
  475.         ' グラフィックがフォームの右端に達したら、左上に方向を変更します。
  476.         ' コントロールの幅からグラフィックの幅を差し引いて、
  477.         ' フォームの右端を調べます。
  478.         If imgMoon(0).Left >= (DemoForm.Width - imgMoon(0).Width) Then
  479.             Motion = 1
  480.         ' グラフィックがフォームの上端に達したら、右下に方向を変更します。
  481.         ElseIf imgMoon(0).Top <= 0 Then
  482.             Motion = 3
  483.         End If
  484.     Case 3
  485.         ' グラフィックを右下に 100 twip ずつ移動します。
  486.         imgMoon(0).Move imgMoon(0).Left + 100, imgMoon(0).Top + 100
  487.         ' アニメーションを次のフレームに更新します。
  488.         IncrFrame
  489.         ' グラフィックが右端に達したら、左下に方向を変更します。
  490.         If imgMoon(0).Left >= (DemoForm.Width - imgMoon(0).Width) Then
  491.             Motion = 4
  492.         ' グラフィックがフォームの下端に達したら、右上に方向を変更します。
  493.         ' フォームの高さからグラフィックの高さを差し引き、さらに
  494.         ' そこから 680 twip (タイトル バーとメニュー バーの高さ) を差し引いて
  495.         ' フォームの下端を調べます。
  496.         ElseIf imgMoon(0).Top >= (DemoForm.Height - imgMoon(0).Height) - 680 Then
  497.             Motion = 2
  498.         End If
  499.     Case 4
  500.         ' グラフィックを左下に 100 twip ずつ移動します。
  501.         imgMoon(0).Move imgMoon(0).Left - 100, imgMoon(0).Top + 100
  502.         ' アニメーションを次のフレームに更新します。
  503.         IncrFrame
  504.         ' グラフィックがフォームの左端に達したら、右下に方向を変更します。
  505.         If imgMoon(0).Left <= 0 Then
  506.             Motion = 3
  507.         ' グラフィックがフォームの下端に達したら、左上に方向を変更します。
  508.         ElseIf imgMoon(0).Top >= (DemoForm.Height - imgMoon(0).Height) - 680 Then
  509.             Motion = 1
  510.         End If
  511.     End Select
  512. End Sub
  513.  
  514. Private Sub IncrFrame()
  515.     ' フレーム番号をインクリメントします。
  516.     FrameNum = FrameNum + 1
  517.     ' アニメーション フレームのコントロール配列には、0 から 7 までの要素があります。
  518.     ' 8 番めのフレームでフレーム番号が 0 にリセットされ、アニメーションのループが繰り返されます。
  519.     If FrameNum > 8 Then
  520.         FrameNum = 1
  521.     End If
  522.     ' イメージ コントロールの Picture プロパティを、現在のフレームの Picture プロパティに設定します。
  523.     imgMoon(0).Picture = imgMoon(FrameNum).Picture
  524.     ' アニメーションが速くなりすぎないよう、表示を遅らせます。
  525.     Delay
  526. End Sub
  527.  
  528. Private Sub LineCtlDemo()
  529.     ' 線の開始点の X 座標と Y 座標をフォーム上にランダムに設定します。
  530.     linLineCtl.X1 = Int(DemoForm.Width * Rnd)
  531.     linLineCtl.Y1 = Int(DemoForm.Height * Rnd)
  532.     ' 線の終了点の X 座標と Y 座標をフォーム上にランダムに設定します。
  533.     linLineCtl.X2 = Int(DemoForm.Width * Rnd)
  534.     linLineCtl.Y2 = Int(DemoForm.Height * Rnd)
  535.     ' フォームをクリアして、残っているピクセルを除去します。
  536.     Cls
  537.     ' 線の移動を再開する前に、表示を遅らせます。
  538.     Delay
  539. End Sub
  540.  
  541. Private Sub LineDemo()
  542.     ' ローカル変数を宣言します。
  543.     Dim X2
  544.     Dim Y2
  545.     ' ランダムな RGB 色を作成します。
  546.     R = 255 * Rnd
  547.     G = 255 * Rnd
  548.     B = 255 * Rnd
  549.     ' ライン コントロールの終了点をフォーム上にランダムに設定します。
  550.     X2 = Int(DemoForm.Width * Rnd + 1)
  551.     Y2 = Int(DemoForm.Height * Rnd + 1)
  552.     ' Line メソッドを使って、現在の座標から現在の終了点へ、
  553.     ' ランダムな色で線を描きます。直前の線の終了点が次の線の開始点になります。
  554.     Line -(X2, Y2), RGB(R, G, B)
  555. End Sub
  556.  
  557. Private Sub mnuCircleDemo_Click()
  558.     Cls
  559.     mnuCtlMoveDemo.Checked = False
  560.     mnuLineDemo.Checked = False
  561.     mnuShapeDemo.Checked = False
  562.     mnuPSetDemo.Checked = False
  563.     mnuLineCtlDemo.Checked = False
  564.     mnuImageDemo.Checked = False
  565.     mnuScaleDemo.Checked = False
  566.     mnuCircleDemo.Checked = True
  567. End Sub
  568.  
  569. Private Sub mnuCtlMoveDemo_Click()
  570.     Cls
  571.     mnuCtlMoveDemo.Checked = True
  572.     mnuLineDemo.Checked = False
  573.     mnuShapeDemo.Checked = False
  574.     mnuPSetDemo.Checked = False
  575.     mnuLineCtlDemo.Checked = False
  576.     mnuImageDemo.Checked = False
  577.     mnuScaleDemo.Checked = False
  578.     mnuCircleDemo.Checked = False
  579. End Sub
  580.  
  581. Private Sub mnuExit_Click()
  582.     End
  583. End Sub
  584.  
  585. Private Sub mnuImageDemo_Click()
  586.     Cls
  587.     mnuCtlMoveDemo.Checked = False
  588.     mnuLineDemo.Checked = False
  589.     mnuShapeDemo.Checked = False
  590.     mnuPSetDemo.Checked = False
  591.     mnuLineCtlDemo.Checked = False
  592.     mnuImageDemo.Checked = True
  593.     mnuScaleDemo.Checked = False
  594.     mnuCircleDemo.Checked = False
  595. End Sub
  596.  
  597. Private Sub mnuLineCtlDemo_Click()
  598.     Cls
  599.     mnuCtlMoveDemo.Checked = False
  600.     mnuLineDemo.Checked = False
  601.     mnuShapeDemo.Checked = False
  602.     mnuPSetDemo.Checked = False
  603.     mnuLineCtlDemo.Checked = True
  604.     mnuImageDemo.Checked = False
  605.     mnuScaleDemo.Checked = False
  606.     mnuCircleDemo.Checked = False
  607. End Sub
  608.  
  609. Private Sub mnuLineDemo_Click()
  610.     Cls
  611.     mnuCtlMoveDemo.Checked = False
  612.     mnuLineDemo.Checked = True
  613.     mnuShapeDemo.Checked = False
  614.     mnuPSetDemo.Checked = False
  615.     mnuLineCtlDemo.Checked = False
  616.     mnuImageDemo.Checked = False
  617.     mnuScaleDemo.Checked = False
  618.     mnuCircleDemo.Checked = False
  619. End Sub
  620.  
  621. Private Sub mnuPSetDemo_Click()
  622.     Cls
  623.     mnuCtlMoveDemo.Checked = False
  624.     mnuLineDemo.Checked = False
  625.     mnuShapeDemo.Checked = False
  626.     mnuPSetDemo.Checked = True
  627.     mnuLineCtlDemo.Checked = False
  628.     mnuImageDemo.Checked = False
  629.     mnuScaleDemo.Checked = False
  630.     mnuCircleDemo.Checked = False
  631. End Sub
  632.  
  633. Private Sub mnuScaleDemo_Click()
  634.     Cls
  635.     mnuCtlMoveDemo.Checked = False
  636.     mnuLineDemo.Checked = False
  637.     mnuShapeDemo.Checked = False
  638.     mnuPSetDemo.Checked = False
  639.     mnuLineCtlDemo.Checked = False
  640.     mnuImageDemo.Checked = False
  641.     mnuScaleDemo.Checked = True
  642.     mnuCircleDemo.Checked = False
  643. End Sub
  644.  
  645. Private Sub mnuShapeDemo_Click()
  646.     Cls
  647.     mnuCtlMoveDemo.Checked = False
  648.     mnuLineDemo.Checked = False
  649.     mnuShapeDemo.Checked = True
  650.     mnuPSetDemo.Checked = False
  651.     mnuLineCtlDemo.Checked = False
  652.     mnuImageDemo.Checked = False
  653.     mnuScaleDemo.Checked = False
  654.     mnuCircleDemo.Checked = False
  655. End Sub
  656.  
  657. Private Sub PSetDemo()
  658.     ' ランダムな RGB 色を作成します。
  659.     R = 255 * Rnd
  660.     G = 255 * Rnd
  661.     B = 255 * Rnd
  662.     ' XPos により、紙ふぶきの水平位置をフォーム上にランダムに設定します。
  663.     XPos = Rnd * ScaleWidth
  664.     ' YPos により、紙ふぶきの垂直位置をフォーム上にランダムに設定します。
  665.     YPos = Rnd * ScaleHeight
  666.     ' XPos と YPos の位置に紙ふぶきを描き、ランダムな色を割り当てます。
  667.     PSet (XPos, YPos), RGB(R, G, B)
  668. End Sub
  669.  
  670. Private Sub ScaleDemo()
  671.     ' ローカル変数を宣言します。
  672.     Dim Box
  673.     ' フォームの幅の単位数と同じ数のボックスを作成します。
  674.     For Box = 1 To ScaleWidth
  675.         ' ランダムな RGB 色を作成します。
  676.         R = 255 * Rnd
  677.         G = 255 * Rnd
  678.         B = 255 * Rnd
  679.         ' B オプション (ボックス) と F オプション (塗りつぶし) を指定した Line メソッドを使ってボックスを描きます。
  680.         ' ScaleWidth によって設定された X 座標および 0 の Y 座標 (フォームの下端) がボックスの開始点になります。
  681.         ' ボックスの幅は 1 単位、高さは 0 から 10 までのランダムな値となります。
  682.         ' ボックスはランダムな色で塗りつぶされます。
  683.         Line (Box, 0)-Step(1, (Int(11 * Rnd))), RGB(R, G, B), BF
  684.     Next Box
  685.     ' 再描画の前に、すべてのボックスの表示をいったん停止します。
  686.     Delay
  687. End Sub
  688.  
  689. Private Sub ShapeDemo()
  690.     ' ローカル変数を宣言します。
  691.     Dim CloneID
  692.     ' ランダムな RGB 色を作成します。
  693.     R = 255 * Rnd
  694.     G = 255 * Rnd
  695.     B = 255 * Rnd
  696.     ' フォームの背景色をランダムに設定します。
  697.     DemoForm.BackColor = RGB(R, G, B)
  698.     ' コントロール配列の中のシェイプ コントロールをランダムに選択します。
  699.     CloneID = Int(20 * Rnd + 1)
  700.     ' XPos と YPos により、選択したシェイプ コントロールの位置をフォーム上にランダムに設定します。
  701.     XPos = Int(DemoForm.Width * Rnd + 1)
  702.     YPos = Int(DemoForm.Height * Rnd + 1)
  703.     ' 選択したシェイプ コントロールの形をランダムに設定します。
  704.     shpClone(CloneID).Shape = Int(6 * Rnd)
  705.     ' 選択したシェイプ コントロールの高さと幅を、500 twip から 2500 twip の間でランダムに設定します。
  706.     shpClone(CloneID).Height = Int(2501 * Rnd + 500)
  707.     shpClone(CloneID).Width = Int(2501 * Rnd + 500)
  708.     ' シェイプ コントロールの背景色と DrawMode プロパティの色をランダムに設定します。
  709.     shpClone(CloneID).BackColor = QBColor(Int(15 * Rnd))
  710.     shpClone(CloneID).DrawMode = Int(16 * Rnd + 1)
  711.     ' 選択したシェイプ コントロールを XPos と YPos の位置に移動します。
  712.     shpClone(CloneID).Move XPos, YPos
  713.     ' 選択したシェイプ コントロールを表示状態にします。
  714.     shpClone(CloneID).Visible = True
  715.     ' 次のシェイプ コントロールを選択し変更する前に少し待ちます。
  716.     Delay
  717. End Sub
  718.  
  719. Private Sub Timer1_Timer()
  720.     If mnuCtlMoveDemo.Checked And DoFlag = True Then
  721.         CtlMoveDemo
  722.     ElseIf mnuLineDemo.Checked And DoFlag = True Then
  723.         LineDemo
  724.     ElseIf mnuShapeDemo.Checked And DoFlag = True Then
  725.         ShapeDemo
  726.     ElseIf mnuPSetDemo.Checked And DoFlag = True Then
  727.         PSetDemo
  728.     ElseIf mnuLineCtlDemo.Checked And DoFlag = True Then
  729.         LineCtlDemo
  730.     ElseIf mnuImageDemo.Checked And DoFlag = True Then
  731.         ImageDemo
  732.     ElseIf mnuScaleDemo.Checked And DoFlag = True Then
  733.         ScaleDemo
  734.     ElseIf mnuCircleDemo.Checked And DoFlag = True Then
  735.         CircleDemo
  736.     End If
  737. End Sub
  738.  
  739.