![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんばんは。
ピクチャーボックスの中に、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ランキング
-
Accessのクエリの値を変換(代入...
-
C言語のプログラム
-
Visual Basicで多角形を描くプ...
-
キャスト演算について。
-
vba 時間の引き算 例えば 15:00...
-
Visual Studio 「AnyCpu」について
-
Designer.vbは直接コードをいじ...
-
VB6(SP5)+OO4OでCreateObjectが...
-
印刷要求順番と印刷出力順番が...
-
VB.NETで参照設定したDLLの修正...
-
VBAでArrayListを使う為の「msc...
-
意味不明の実行時エラーで困っ...
-
VBAでOutlookを終了させたい Ex...
-
ActiveReportsを使って[印刷ダ...
-
EXCEL VBAから他アプリケーショ...
-
アウトルックが起動しているか...
-
VBSから別のVBS起動するとき変...
-
Windows PowerShellでC言語を実...
-
byte型をstring型として扱うには
-
VBSで起動したアプリが前面表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB2013での時間帯判定で困って...
-
matplotlibで任意の角度の円弧...
-
経過日数を調べたい
-
Accessのクエリの値を変換(代入...
-
カラーコード 濃くしたい
-
秒数を入力すると○時間○分○秒と...
-
電卓の作成 VB
-
画像を二次元フーリエ変換
-
c言語またはVBのSin Cos Tan
-
C言語のプログラム
-
Access2000で電卓プログラム。
-
2進数を10進数にする方法
-
Excelで文字を数値に変換する方...
-
VB2010で、時刻と時間の計算に...
-
階乗の逆数を計算するFunction...
-
あと何日or何日目?を計算する方法
-
擬似マインスイーパー
-
自動車ローンの計算式について
-
世界測地系から東京測地系へ変換
-
単位計算のアルゴリズム
おすすめ情報