
こんばんは。
ピクチャーボックスの中に、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を探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
このコードはどこが間違ってい...
-
Excelで文字を数値に変換する方...
-
自動車ローンの計算式について
-
変数の型を変換する方法を教え...
-
VB2013での時間帯判定で困って...
-
vc++ dll excel vba
-
同じIEのウィンドウで、リンク...
-
DataGridViewの並び替え
-
MFCと.NETFramework
-
アプリからVB(Form)
-
今回、windows 環境下で動くデ...
-
フォント色つけ
-
DLLファイルの破損
-
確率について
-
ActiveXで印刷処理
-
文字のチェック
-
リストポックスについて
-
ManagementClassが見つからない。
-
印刷機能について
-
Windows10,VisualStudio2017で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのクエリの値を変換(代入...
-
経過日数を調べたい
-
画像を二次元フーリエ変換
-
秒数を入力すると○時間○分○秒と...
-
DateDiff関数の怪!?
-
c言語またはVBのSin Cos Tan
-
カラーコード 濃くしたい
-
VB2013での時間帯判定で困って...
-
VB2010で、時刻と時間の計算に...
-
電卓の作成 VB
-
UTF_16からUTF_8への変換で困っ...
-
離散コサイン変換(DCT)について
-
C言語プログラムの質問です。 ...
-
日付の計算について
-
C言語のプログラム
-
4桁の整数の前位の足し算を行い...
-
世界測地系から東京測地系へ変換
-
階乗の逆数を計算するFunction...
-
FORTRANの課題
-
ウェーブレット変換に関して
おすすめ情報