こんばんは。
ピクチャーボックスの中に、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を探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Matlabで群遅延特性
-
Accessのクエリの値を変換(代入...
-
経過日数を調べたい
-
Visual Basicで多角形を描くプ...
-
Visual Studio 「AnyCpu」について
-
Designer.vbは直接コードをいじ...
-
C#ソースをCSCファイルにてコン...
-
excel vbaから実行するexe実行...
-
VB.NETで参照設定したDLLの修正...
-
印刷ダイアログを表示させない方法
-
VBAでOutlookを終了させたい Ex...
-
「読み込み違反」が起きたとき...
-
VBAでArrayListを使う為の「msc...
-
Windows PowerShellでC言語を実...
-
印刷要求順番と印刷出力順番が...
-
C#VB、exeに埋め込んだexeの実行
-
VBでUSB制御プログラム作成する...
-
実行ファイル(.exe)が別のPC...
-
意味不明の実行時エラーで困っ...
-
vbaでPDFファイルが印刷されない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
経過日数を調べたい
-
Accessのクエリの値を変換(代入...
-
VB2010で、時刻と時間の計算に...
-
VB2013での時間帯判定で困って...
-
単位計算のアルゴリズム
-
画像を二次元フーリエ変換
-
電卓の作成 VB
-
秒数を入力すると○時間○分○秒と...
-
DateDiff関数の怪!?
-
UTF_16からUTF_8への変換で困っ...
-
Matlabで群遅延特性
-
カラーコード 濃くしたい
-
離散コサイン変換(DCT)について
-
グリッドの使い方について
-
プログラム作成 計算
-
変数の型を変換する方法を教え...
-
Designer.vbは直接コードをいじ...
-
Visual Studio 「AnyCpu」について
-
意味不明の実行時エラーで困っ...
-
vba 時間の引き算 例えば 15:00...
おすすめ情報