dポイントプレゼントキャンペーン実施中!

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文の軌跡も消えてしまいます。

A 回答 (3件)

MSDNによると


Public: 省略可能です。すべてのモジュールのすべてのプロシージャから参照できる Sub プロシージャを宣言するときに指定します。Option Private ステートメントが記述されているモジュールの中で使用した場合、その Sub プロシージャは、プロジェクトの外からは参照できません。

Private: 省略可能です。Sub プロシージャを記述したモジュール内の、ほかのプロシージャからのみ参照できるプロシージャを宣言するときに、指定します。


これ以外にもいろいろキーワードがあります。
どれがよくてどれが悪いということではなく、
プログラマーが自由に使い分けるわけです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/06/29 12:16

>これは関数なんでしょうか?


そうです。
勝手に作った関数です。
サブルーチンと言った方がわかりやすいでしょうか。
パブリックとプライベートは
まぁ、その意味合い通りです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/06/28 18:34

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
    • good
    • 0
この回答へのお礼

ありがとうございます。確かに出来ました。
しかし私にはプログラムがなんとなくしか読めず、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に書き換えても
ちゃんと動きました。

お礼日時:2007/06/28 07:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!