C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 自作メソッドを実行中、とまってしまう


(過去ログ 103 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■61829 / inTopicNo.1)  自作メソッドを実行中、とまってしまう
  
□投稿者/ 佐藤 正弘 (5回)-(2011/09/07(Wed) 14:17:23)

分類:[VB.NET/VB2005 以降] 

visual basic 2010を使用。
次のプログラム 参照されたし。

Public Class Form1
Dim img As New Bitmap(500, 500)
Dim g As Graphics = Graphics.FromImage(img)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'大きさを指定してBitmapオブジェクトの作成
' Dim img As New Bitmap(500, 500)

'imgのGraphicsオブジェクトを取得
' Dim g As Graphics = Graphics.FromImage(img)

' g.FillRectangle(Brushes.Red, 0, 0, 400, 400)
'g.FillRectangle(Brushes.Yellow, 25, 25, 350, 350)

'g.FillRectangle(Brushes.Black, 0, 0, 400, 400)

'g.FillRectangle(Brushes.Green, 50, 50, 300, 300)

'g.FillRectangle(Brushes.Cyan, 75, 75, 250, 250)

'g.FillRectangle(Brushes.Red, 100, 100, 200, 200)

'g.FillRectangle(Brushes.Magenta, 125, 125, 150, 150)

'g.FillRectangle(Brushes.Yellow, 150, 150, 100, 100)

Paintsikaku()

'作成した画像を表示する
Dim pg As Graphics = PictureBox1.CreateGraphics()
pg.DrawImage(img, g.VisibleClipBounds)

'リソースを開放する
img.Dispose()
g.Dispose()
pg.Dispose()
End Sub

Private Sub PictureBox1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick
' Dim img As New Bitmap(500, 500)
' Dim g As Graphics = Graphics.FromImage(img)
'g.FillRectangle(Brushes.Black, 0, 0, 400, 400)

'g.FillRectangle(Brushes.Blue, 25, 25, 350, 350)

'g.FillRectangle(Brushes.Green, 50, 50, 300, 300)

'g.FillRectangle(Brushes.Cyan, 75, 75, 250, 250)

'g.FillRectangle(Brushes.Red, 100, 100, 200, 200)

'g.FillRectangle(Brushes.Magenta, 125, 125, 150, 150)

'g.FillRectangle(Brushes.Yellow, 150, 150, 100, 100)
Paintsikaku() ’ここで、止まってしまう
Dim col1 As New Color
col1 = img.GetPixel(e.X, e.Y)

Label1.BackColor = col1
Label2.Text = col1.Name



End Sub
Private Sub Paintsikaku()
' Dim img As New Bitmap(500, 500)
' Dim g As Graphics = Graphics.FromImage(img)
g.FillRectangle(Brushes.Black, 0, 0, 400, 400) ’ここで、パラメータが適切でないと、メッセージがでて、止まる

g.FillRectangle(Brushes.Blue, 25, 25, 350, 350)

g.FillRectangle(Brushes.Green, 50, 50, 300, 300)

g.FillRectangle(Brushes.Cyan, 75, 75, 250, 250)

g.FillRectangle(Brushes.Red, 100, 100, 200, 200)

g.FillRectangle(Brushes.Magenta, 125, 125, 150, 150)

g.FillRectangle(Brushes.Yellow, 150, 150, 100, 100)

End Sub


End Class


 書いたイメージをクリックすると、その色と色を文字列に変換したものを、ラベルに表示するようになっている。

 自作のメソッドを使用しないで、四角を描くところをダブらせると、上手くいくが、自作メソッド Paintsikakuを使うと、クリックしたところで、
 パラメータが適切でないと、表示され、止まってしまう。ボタンを押すと、Paintsikakuを用いて、四角を表示できるのに、四角をクリックすると、止まって
 しまう。同じ、Pintsikakuを使用しているのに、不思議。原因不明。分る人、どうぞ、お教えください。

引用返信 編集キー/
■61830 / inTopicNo.2)  Re[1]: 自作メソッドを実行中、とまってしまう
□投稿者/ shu (977回)-(2011/09/07(Wed) 14:35:44)
No61829 (佐藤 正弘 さん) に返信

> 'リソースを開放する
> img.Dispose()
> g.Dispose()
> pg.Dispose()
この辺が実行されてから描画してませんか?
引用返信 編集キー/
■61834 / inTopicNo.3)  Re[2]: 自作メソッドを実行中、とまってしまう
□投稿者/ 佐藤 正弘 (6回)-(2011/09/07(Wed) 15:27:16)
No61830 (shu さん) に返信
> ■No61829 (佐藤 正弘 さん) に返信
>
>> 'リソースを開放する
>> img.Dispose()
>> g.Dispose()
>> pg.Dispose()
> この辺が実行されてから描画してませんか?

ステップインで、一行ずつ、実行しましたが、disposeを実行しても、駄目でした。
ここを、実行しないと、シカクをクリックする動作ができません。
引用返信 編集キー/
■61836 / inTopicNo.4)  Re[3]: 自作メソッドを実行中、とまってしまう
□投稿者/ ズッカ (4回)-(2011/09/07(Wed) 15:43:27)
No61834 (佐藤 正弘 さん) に返信

gはすでにDisposeしているので、例外になるのではないですか?

いくつかコメントアウトした変数の宣言があって、わけがわからないです。
変数のスコープはきちんと整理していますか?(imgとか、gとか。)
引用返信 編集キー/
■61842 / inTopicNo.5)  Re[4]: 自作メソッドを実行中、とまってしまう
□投稿者/ 佐藤 正弘 (7回)-(2011/09/07(Wed) 16:56:02)
No61836 (ズッカ さん) に返信
> ■No61834 (佐藤 正弘 さん) に返信
>
> gはすでにDisposeしているので、例外になるのではないですか?
>
> いくつかコメントアウトした変数の宣言があって、わけがわからないです。
> 変数のスコープはきちんと整理していますか?(imgとか、gとか。)


disposeをコメントアウトしたら、上手く、いきました。有難うございました。



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -