みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VisualBasic2008で、Graphicsについての質問です。

VisualBasic2008で、Graphicsについての質問です。
私は今、Graphics描画の勉強をしているのですが、下のコードを書くと『使用されたパラメータが有効ではありません。』というエラーが出ます。
エラー行は、g.FillEllipse()の行なのですが、修正箇所が解らず苦しんでいます。
どなたか教えてください。よろしくお願いします。

Dim MyBrush As Brush = New Drawing2D.LinearGradientBrush(New Rectangle(5, 5, 120, 60), Color.Yellow, Color.Black, 40)

g.FillEllipse(MyBrush, New Rectangle(5, 5, 120, 60))

投稿日時 - 2010-07-08 15:23:27

QNo.6024116

困ってます

質問者が選んだベストアンサー

先ほどの回答に追記しておきます。

別にForm_Paintでなくともよいです。
要は「g」という定義が正しく定義されていればエラーもでないかと。
どこに描画するのか指定しなさいって事なんでしょうかね。

FormにButtonを1つ貼り付けました。
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim MyBrush As Brush = New Drawing2D.LinearGradientBrush(New Rectangle(5, 5, 120, 60), Color.Yellow, Color.Black, 40)
Dim g As System.Drawing.Graphics = Me.CreateGraphics
g.FillEllipse(MyBrush, New Rectangle(5, 5, 120, 60))
End Sub

投稿日時 - 2010-07-08 16:40:50

補足

>どこに描画するのか指定しなさいって事なんでしょうかね。
そういうエラーでしたか。

>「g.FillEllipse」の「g」はどっから持ってきました?
すみません、さっきのコードとは別の場所にかいてあったので抜けてしまいました。
改めて全コードを書くとこうなります。
このコードだとなぜ上手くいかないのでしょうか?


Dim g As Graphics

PictureBox1.Image = New Bitmap(Me.PictureBox1.Size.Width, Me.PictureBox1.Height)
g = Graphics.FromImage(PictureBox1.Image)

Dim MyBrush As Brush = New Drawing2D.LinearGradientBrush(New Rectangle(5, 5, 120, 60), Color.Yellow, Color.Black, 40)

g.FillEllipse(MyBrush, New Rectangle(5, 5, 120, 60))

投稿日時 - 2010-07-08 17:27:53

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

「g」を定義していて「FromImage」で指定してるんですね。
そうなると前述した意味のエラーではないのかも・・・

FormにButtonとPictireBoxを配置してButton_Clickイベントに
提示してもらったソースを記述したところエラーなんて出ませんでしたよ?

投稿日時 - 2010-07-12 13:51:20

こんちわ。

「g.FillEllipse」の「g」はどっから持ってきました?
それと何かのイベントに記述しているんだと思いますがどのイベントに記述してますか?

試してみましたが↓

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim MyBrush As Brush = New Drawing2D.LinearGradientBrush(New Rectangle(5, 5, 120, 60), Color.Yellow, Color.Black, 40)
e.Graphics.FillEllipse(MyBrush, New Rectangle(5, 5, 120, 60))
End Sub

上記のイベントでは「g」を「e.Graphics」とする事で動作確認できましたよ。

投稿日時 - 2010-07-08 15:59:28

あなたにオススメの質問