[リストへもどる]
一括表示

投稿時間:2004/05/03(Mon) 10:16
投稿者名:おじん
URL :
タイトル:
正多角形を描きたいのですが
下記のコード(多角形の場合は要修正)で各点の座標を求めようとしましたが
見た目、正しくありません(各点は円上にあるはず...なのに?)。
どこが間違っているのおしえてください。
(FormにPictureBoxをひとつ貼り付けて、、、)
Private Sub Form_Load()
    Dim pi#, X#, Y#, s&
    pi = 180 / 3.1415926535
    Picture1.ScaleMode = vbPixels
    Picture1.AutoRedraw = True
    Picture1.Scale (-1.5, 1.5)-(1.5, -1.5)
    Picture1.Circle (0, 0), 1, vbRed
'    For s = 30 To 421 Step 60
    For s = 30 To 31 Step 60 '第一点だけ計算・表示するため
        X = Cos(pi * s): Y = Sin(pi * s)
        Picture1.Circle (X, Y), 0.03, vbBlack
    Next s
End Sub
このコード例で(コメントを付けている)点(X,Y)が左下になることも
分かりません。右上になると思うのですが。なぜでしょうか?
よろしくお願いいたします。

投稿時間:2004/05/03(Mon) 15:23
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 正多角形を描きたいのですが
> どこが間違っているのおしえてください。
間違ってはいないのですが、PictureBoxのサイズを Picture1.Scale (-1.5, 1.5)-(1.5, -1.5)
に設定しているので、正方形のPictureBoxでないとメモリが縦と横では変わってしまうのです

この場合ピクチャーボックスの真ん中が 0,0 になり幅と高さが それぞれ 3 に設定した事に
なります。
長方形のピクチャーボックスだとどちらも 3 ですから 同じ 1 でも縦と横では長さが
変わってしまいます。
    Picture1.Height = 6000
    Picture1.Width = 6000
のように縦横同じサイズのPictureBoxにして実行してみて下さい。


> このコード例で(コメントを付けている)点(X,Y)が左下になることも
> 分かりません。右上になると思うのですが。なぜでしょうか?

Picture1.Scale (-1.5, 1.5)-(1.5, -1.5) で、座標 0,0 がPictureBoxの中心になって
いるからです。

私の説明不足のところは、ヘルプで Scale メソッド を調べてみたり
    Picture1.Circle (0, 0), 0.03, vbBlack
    Picture1.Circle (-1.4, 1.4), 0.03, vbBlack
を実行すれば理解頂けるかと思います。

投稿時間:2004/05/03(Mon) 17:20
投稿者名:おじん
URL :
タイトル:
Re^2: 正多角形を描きたいのですが
いつものことながらありがとうございます。
答えを教えていただいて、前にも同じことを聞いたような。
「Scale」のことがまだ分かっていないようです。
今日から(広島では)フラワーフェスティバルで、眼下は、
人の波でにぎやかで「集中」はできませんが、がんばって
ヘルプを読んでみます。
かれこれ一年以上VBと遊んでいるのにわからないことが
多すぎます。情けないです。このごともよろしく。