• 締切済み

2次関数のグラフを書くには・・・(VB.net)

初めまして。 プログラム未経験なのですがVB.netでログラムを組まなくてはならなくなりました。 本を読んだのですが、分からなかったので皆さんに質問させていただきます。よろしくお願いします。 タイトル通り、「描画」ボタンのクリックで 2次関数が書きたいのですが表示されません。 参考にしたプログラムは平方根のグラフ表示です。以下 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click On Error Resume Next Dim g As Graphics = CreateGraphics() g.TranslateTransform(0, ClientRectangle.Height) g.ScaleTransform(1, -1) g.Clear(BackColor) Dim x As Integer For x = 0 To 400 g.FillRectangle(Brushes.Green, x, CInt(10 * Math.Sqrt(x)), 1, 1) Next End Sub 以下は僕が以上から考えて書いたプログラムです。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click On Error Resume Next Dim g As Graphics = CreateGraphics() g.TranslateTransform(0, ClientRectangle.Height) g.ScaleTransform(1, -1) g.Clear(BackColor) Dim x, y As Integer For x = 0 To 400 Step 10 y = -1 * (x * x) + 1 g.FillRectangle(Brushes.Blue, x, 10 * (-1 * (x * x) + 1), 1, 1) Next     End Sub エラーは起きないのですがグラフが出ません。 つまらない質問かもしれませんがどうかご指導お願いいたします。。。

みんなの回答

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.2

>y = (-1 * (x * x) + 1) / 500 >の/500というのはどういった意図があるのでしょうか? そのままだとyの最大値は400x400=160000になるので大きすぎるようなので 500で割ってみただけだけです。 g.FillRectangle() のyの範囲はどうなっているか調べてみてください。 (Graphics のところに載っていませんか)

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.1

下記のように変えるとどうなりますか? 詳しくは、Graphics関係のところを調べてみてください。 g.TranslateTransform(0, ClientRectangle.Height)  ↓ g.TranslateTransform(0, 0) y = -1 * (x * x) + 1 g.FillRectangle(Brushes.Blue, x, 10 * (-1 * (x * x) + 1), 1, 1)  ↓ y = (-1 * (x * x) + 1) / 500 g.FillRectangle(Brushes.Blue, x, y, 1, 1)

Brisk
質問者

お礼

お返事ありがとうございます。 教えていただいたように変更してみたところ、 左上から右下にグラフが下りてくるものがかけました。 y = (-1 * (x * x) + 1) / 500 の/500というのはどういった意図があるのでしょうか? すごく嬉しいです! 回答ありがとうございました!!

関連するQ&A

専門家に質問してみよう