• ベストアンサー

消す軌跡と残す軌跡

For t = 0 To 6 Step 0.01 Picture1.Line (0, 0)-(Cos(t), Sin(t)) Picture1.Cls Picture1.PSet (Cos(t), Sin(t)) Next t アニメーションで Line文の描く軌跡は消したいのでClsを使ったのですが Pset文の描く軌跡は残したいのです。 その場合どうしたらいいのでしょうか? 上のプログラムですとline文の軌跡もPset文の軌跡も消えてしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

MSDNによると Public: 省略可能です。すべてのモジュールのすべてのプロシージャから参照できる Sub プロシージャを宣言するときに指定します。Option Private ステートメントが記述されているモジュールの中で使用した場合、その Sub プロシージャは、プロジェクトの外からは参照できません。 Private: 省略可能です。Sub プロシージャを記述したモジュール内の、ほかのプロシージャからのみ参照できるプロシージャを宣言するときに、指定します。 これ以外にもいろいろキーワードがあります。 どれがよくてどれが悪いということではなく、 プログラマーが自由に使い分けるわけです。

karasu4649
質問者

お礼

大変ためになりました。いろいろありがとうございました。

その他の回答 (2)

回答No.2

>これは関数なんでしょうか? そうです。 勝手に作った関数です。 サブルーチンと言った方がわかりやすいでしょうか。 パブリックとプライベートは まぁ、その意味合い通りです。

karasu4649
質問者

お礼

もしかしてこういうことでしょうか? 関数というのはどこからでも呼び出せるようにpublic(公)にしておいたほうが良い、ということでしょうか? 関数がprivate(私)だとやっぱり困るものなんでしょうか?

回答No.1

VB6でしょうか。 CLSでラインだけ消すということはできません。 1.バックカラーでラインを描いて消す。 2.1度CLSし、見せたい部分を再び描く。 3.ラインとPSETを別々のPictureに描きさらに別のPictureにコピー。 Private Sub Command1_Click() Dim T As Double For T = 0 To 6 Step 0.01 Call DrawP(T) DoEvents Next T End Sub Public Sub DrawP(T As Double) Dim i As Single Picture1.Cls Picture1.Line (0, 0)-(Cos(T), Sin(T)) For i = 0 To T Step 0.01 Picture1.PSet (Cos(i), Sin(i)) Next i End Sub Private Sub Form_Load() Picture1.ScaleLeft = -2 Picture1.ScaleWidth = 4 Picture1.ScaleTop = -2 Picture1.ScaleHeight = 4 End Sub

karasu4649
質問者

お礼

ありがとうございます。確かに出来ました。 しかし私にはプログラムがなんとなくしか読めず、otto0001ottoさんの教えてくれたやり方を参考にして Private Sub Command1_Click() Dim T As Double Dim i As Single For T = 0 To 6 Step 0.01 Picture1.Cls Picture1.Line (0, 0)-(Cos(T), Sin(T)) For i = 0 To T Step 0.01 Picture1.PSet (Cos(i), Sin(i)) Next i Next T End Sub としたら同じように出来ました。 Public Sub DrawP(T As Double)というのがよくわからないのですが これは関数なんでしょうか? あとpublicの意味がわからないのですが、publicをprivateに書き換えても ちゃんと動きました。

関連するQ&A