- ベストアンサー
消す軌跡と残す軌跡
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文の軌跡も消えてしまいます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
MSDNによると Public: 省略可能です。すべてのモジュールのすべてのプロシージャから参照できる Sub プロシージャを宣言するときに指定します。Option Private ステートメントが記述されているモジュールの中で使用した場合、その Sub プロシージャは、プロジェクトの外からは参照できません。 Private: 省略可能です。Sub プロシージャを記述したモジュール内の、ほかのプロシージャからのみ参照できるプロシージャを宣言するときに、指定します。 これ以外にもいろいろキーワードがあります。 どれがよくてどれが悪いということではなく、 プログラマーが自由に使い分けるわけです。
その他の回答 (2)
- otto0001otto
- ベストアンサー率25% (64/249)
>これは関数なんでしょうか? そうです。 勝手に作った関数です。 サブルーチンと言った方がわかりやすいでしょうか。 パブリックとプライベートは まぁ、その意味合い通りです。
お礼
もしかしてこういうことでしょうか? 関数というのはどこからでも呼び出せるようにpublic(公)にしておいたほうが良い、ということでしょうか? 関数がprivate(私)だとやっぱり困るものなんでしょうか?
- otto0001otto
- ベストアンサー率25% (64/249)
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
お礼
ありがとうございます。確かに出来ました。 しかし私にはプログラムがなんとなくしか読めず、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に書き換えても ちゃんと動きました。
お礼
大変ためになりました。いろいろありがとうございました。