tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: 点を一つ一つ出していくためには
投稿日: 2011/01/30(Sun) 19:20
投稿者南場とも子
こんな感じ。
昔のベーシックなら、もっと簡単かもね。

Option Strict On
Option Explicit On

'VisualBasic2010
'PictureBox1をフォームに入れといてね
'Timer1コンポーネントをフォームに入れといてね

Public Class Form1

    '少し難しいですょ↓↓
    '<<難しい場合は1次元配列でも同様の処理ができます>>
    Dim Ten_hyouji_counnter As Integer = 2

    Const Ten_hyouji_suu As Integer = 360 '線を表示する総数
    Dim Ten_List(Ten_hyouji_suu - 1) As Point 'Ten_Listを宣言する
    Dim cyusin_ten As New Point(220, 220) '中心点座標をインスタンスする

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        With Me 'フォーム1の設定
            .FormBorderStyle = Windows.Forms.FormBorderStyle.FixedToolWindow 'スタイル
            .Size = New Size(500, 500) 'フォーム1の大きさ
            .Location = New Point(200, 100) 'フォーム1の表示位置
            .Text = "配列使用例"
        End With
        With PictureBox1 'ピクチャーボックスの設定
            .Size = New Size(Width, Height) 'フォーム1と同じ大きさにする
            .BackColor = Color.Black
            .Location = New Point(0, 0) '念のため一応必要です
        End With
        With Timer1 'タイマーの設定
            .Interval = 10
            .Start()
        End With

        'TenListに表示点の情報を入れる>>座標(x、y)
        Dim x, y, m, k As Integer
        Dim r As Double 'ラジアン
        m = 220 '中心点からの長さ
        k = 90 '角度
        For i = 0 To Ten_hyouji_suu - 1 '表示したい点の数だけ配列に入れる
            r = k * Math.PI / 180 'ラジアンは小数点を使用します
            x = m + CInt(m * Math.Cos(r)) '表示点の横座標を計算します
            y = m + CInt(m * Math.Sin(r)) '表示点の縦座標を計算します
            Ten_List(i) = New Point(x, y) '配列に入れていく
            k += 1 '角度を1度ずつ増やす
        Next

    End Sub

    Sub open_graphics()
        'グラッフィクスを必用なぶんだけ表示する
        Dim map As Bitmap = New Bitmap(Width, Height)
        Dim g As Graphics = Graphics.FromImage(map)
        g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
        For i = 0 To Ten_hyouji_counnter
            g.DrawLine(Pens.YellowGreen, cyusin_ten, Ten_List(i)) '配列Ten_Listから情報を得る
        Next
        PictureBox1.BackgroundImage = map
        g.Dispose()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        open_graphics()
        Ten_hyouji_counnter += 1
        If Ten_hyouji_counnter > Ten_hyouji_suu - 1 Then
            Timer1.Stop()
            MsgBox("終了です")
            Close()
        End If
    End Sub
End Class

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。