アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めまして。
プログラム未経験なのですが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

エラーは起きないのですがグラフが出ません。
つまらない質問かもしれませんがどうかご指導お願いいたします。。。

A 回答 (2件)

>y = (-1 * (x * x) + 1) / 500


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

下記のように変えるとどうなりますか?


詳しくは、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)
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/12/23 00:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!