こんばんは。
ピクチャーボックスの中に、n角形を描くプログラムを考えているのですが、どうしたらいいか分からなくなってしまったので質問させていただきますm(_ _;)m
nの値はテキストボックスを作ってそこに値を入れ、実行ボタンを押すと描ける、というものにしようと思っています。
多角形の書き方をいくつか考えてみたのですが、
1.360度をnで割って放射線を描き、それをつなぐような方法
2.外周の長さを計算しnで割る。―(1)
内角の和を計算し、nで割る。―(2)
(1)の長さの線を引き、その線から(2)の角度だけ振った方向に(1)の長さの線を描く…という作業をFor nextでn回繰り返す…
という感じです。
そもそもVBで角度指定ってできたかな?座標指定しかできなかったような…と思い、検索もしてみたのですが、キーワードが悪いのか、参考になるページが出てこなくて、困ってしまいました。
多角形をかくにはどういうプログラムにしたらよいのでしょうか?
学校の授業や教科書にあることだけでは知識が足りないので、お力を貸してください。
よろしくお願いしますm(_ _)m
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
'VB.NET用。
VB6/VBA用を考えるのは面倒なので却下。今後もその予定なし'例外処理を行うべき位置に自信なしs
Option Explicit On
Option Strict On
Option Compare Binary
Option Infer Off
Public Class Q3785078A
Inherits System.Windows.Forms.Form
Private PictureBox1 As System.Windows.Forms.PictureBox
Private Button1 As System.Windows.Forms.Button
Private Textbox1 As System.Windows.Forms.TextBox
Private PointFArray As System.Drawing.PointF() = {New System.Drawing.PointF(0,0),New System.Drawing.PointF(0,0),New System.Drawing.PointF(0,0)}
Sub New()
Me.Size = New System.Drawing.Size(800,600)
PictureBox1 = New System.Windows.Forms.PictureBox()
Textbox1 = New System.Windows.Forms.Textbox()
Button1 = New System.Windows.Forms.Button()
PictureBox1.Width = 600
PictureBox1.Height = 500
PictureBox1.Left = 100
PictureBox1.Top = 0
PictureBox1.BackColor = System.Drawing.Color.White
TextBox1.Width = 100
TextBox1.Height = 20
TextBox1.Left = 500
TextBox1.Top = 530
Button1.Width = 100
Button1.Height = 20
Button1.Left = 600
Button1.Top = 530
AddHandler Button1.Click, AddressOf Button1_Click
AddHandler PictureBox1.Paint, AddressOf PictureBox1_Paint
Me.Controls.Add(PictureBox1)
Me.Controls.Add(TextBox1)
Me.Controls.Add(Button1)
End Sub
Private Sub CalculatePoligonArray(r As double,n As Integer)
If r <= 0 Then
ElseIf n < 3 Then
Throw New System.ArgumentException("3以上の整数を指定してください")
End If
ReDim PointFArray(n-1)
For i As Integer = 0 To n - 1
System.Diagnostics.Debug.Print("DoubleからSingleへの変換がSystem.Convert.ToSingle経由で行われました。")
System.Diagnostics.Debug.Print(System.Convert.ToSingle(r * System.Math.Cos(2 * i * System.Math.PI / n )).ToString())
System.Diagnostics.Debug.Print(System.Convert.ToSingle(r * System.Math.Sin(2 * i * System.Math.PI / n )).ToString())
PointFArray(i) = New System.Drawing.PointF(System.Convert.ToSingle(r + r * System.Math.Cos(2 * i * System.Math.PI / n )),System.Convert.ToSingle(r + r * System.Math.Sin(2 * i * System.Math.PI / n)))
Next i
End Sub
Private Sub PictureBox1_Paint(sender As Object ,e As System.Windows.Forms.PaintEventArgs)
e.Graphics.DrawPolygon(New System.Drawing.Pen(System.Drawing.Color.Black),PointFArray)
e.Graphics.Flush
End Sub
Private Sub Button1_Click(sender As Object ,e As System.EventArgs)
Button1.Enabled = False
Try
CalculatePoligonArray(200,Integer.Parse(TextBox1.Text))
Catch err As System.FormatException
System.Diagnostics.Debug.Print(err.ToString)
Catch err As System.ArgumentException
System.Diagnostics.Debug.Print(err.ToString)
Finally
End Try
PictureBox1.Refresh
Button1.Enabled = True
End Sub
End Class
Public Class himajin100000
Shared Sub Main(args As String())
Dim Form1 As Q3785078A
Form1 = New Q3785078A()
Form1.ShowDialog
End Sub
End Class
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 量子力学 球面調和関数 導出 方位角成分 微分方程式の解 2 2022/07/02 13:40
- 数学 角度当てクイズVol.225の解き方おしえてください 1 2023/06/23 17:45
- 数学 三角形の3つの頂点から出る3本の直線が1点で交わる条件で 「少なくとも1本の直線は、角の二等分線であ 2 2023/02/21 21:24
- 数学 「θ=0°以上180°以下のとき、tanθ=(ルート3)-2であるときのcosθ、sinθを求めよ」 2 2022/07/24 20:19
- 数学 『弧は弦より長し』 8 2022/04/18 10:23
- 数学 AB=2,BC=3,∠ABC=60°の三角形がある。 点Aから辺BCに垂線を下ろし辺BCとの交点をD 4 2023/02/02 15:55
- ノートパソコン Open Office.orgのDrawで描いた図形の塗りつぶしをしたい 1 2022/03/22 19:24
- 数学 円周の近似値について。 次の方法で円周の近似値を求めました。 1.中心角が360/nの扇形を考える。 7 2022/08/17 20:30
- 数学 中3の数学で写真の問題がどうしても解けません。 「図のADBさえ分かれば解ける。」 ↓ 「DACを知 1 2023/01/17 19:58
- 数学 画像の中学2年生の数学の問題について教えていただきたいです。 三角形ADCが二等辺三角形であることと 2 2023/01/29 16:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
matplotlibで任意の角度の円弧...
-
VBで時間計算の方法
-
Accessのクエリの値を変換(代入...
-
画像を二次元フーリエ変換
-
vba 時間の引き算 例えば 15:00...
-
VBで実行中のEXEファイルの情報...
-
Designer.vbは直接コードをいじ...
-
Visual Studio 「AnyCpu」について
-
意味不明の実行時エラーで困っ...
-
excel vbaから実行するexe実行...
-
「読み込み違反」が起きたとき...
-
VBAでOutlookを終了させたい Ex...
-
PDFファイルを印刷し終了するには
-
IT初心者です 仕事で、vb.netで...
-
プリンタの印刷ジョブを削除し...
-
分かる人は簡単なのだろうが、v...
-
MFC:MDIにおけるビューのアク...
-
VB.NETでSPREADの設定方法
-
VB6.0 exe作成時に実行時エラー...
-
アウトルックが起動しているか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
matplotlibで任意の角度の円弧...
-
経過日数を調べたい
-
Accessのクエリの値を変換(代入...
-
秒数を入力すると○時間○分○秒と...
-
カラーコード 濃くしたい
-
VB2013での時間帯判定で困って...
-
画像を二次元フーリエ変換
-
FORTRANの課題
-
DateDiff関数の怪!?
-
Visual Basicで多角形を描くプ...
-
Matlabで群遅延特性
-
VB2010で、時刻と時間の計算に...
-
電卓の作成 VB
-
世界測地系から東京測地系へ変換
-
c言語またはVBのSin Cos Tan
-
キャスト演算について。
-
あと何日or何日目?を計算する方法
-
プログラム作成 計算
-
VBで時間計算の方法
-
4桁の整数の前位の足し算を行い...
おすすめ情報