GetPicxelをVB.NETで正しく使用するには?

解決


kisisuku  2005-11-22 00:56:45  No: 92810

VB.NETのプログラムで白黒判別プログラムを作成することになったのですが、GetPicxelの使い方が間違っているらしく正しくカウントしてくれません。
ちなみに今作成している問題のプログラムは以下のプログラムです。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim bmap As Bitmap = New Bitmap(PictureBox1.Width, PictureBox1.Height)
        PictureBox1.Image = bmap

        Dim fName As String
        Dim app As String
        app = System.Windows.Forms.Application.StartupPath
        With OpenFileDialog1

            ' 初期表示するファイル名を設定する
            .FileName = ""

            ' ファイルのフィルタを設定する
            .Filter = "Open (*.bmp)|*.bmp"

            ' ダイアログを表示
            .ShowDialog()

            ' Multiselect が True の場合はこのように列挙する
            'For Each nFileName As String In OpenFileDialog1.FileNames
            'MessageBox.Show(nFileName)
            'Next nFileName
            fName = .FileName
        End With
        PictureBox1.Image = image.FromFile(fName)
ErrHandler:
        ' ユーザーが [キャンセル] をクリックしました。
        Exit Sub
    End Sub

    Function CountNumColor(ByRef DotWW As Long, ByRef DotHH As Long, ByRef CHECK_C As Long) As Integer
        Dim Form1 As Object

        Dim NumEQ As Double
        Dim NumNot As Long

        Dim x, y As Long

        NumEQ = 0
        NumNot = 0

        System.Windows.Forms.Application.DoEvents()

        For x = 0 To DotHH - 1
            For y = 0 To DotWW - 1
                System.Windows.Forms.Application.DoEvents()

                If CHECK_C = Val("Bitmap.GetPixel(x,y)") Then
                    NumEQ = NumEQ + 1
                Else
                    NumNot = NumNot + 1

                    Debug.Write("x,y,Val(Bitmap.GetPixel(x, y)")
                End If
            Next y
        Next x

        CountNumColor = NumEQ

    End Function

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim Form1 As Object
        Dim CheckColorB, CheckColorW As Long
        Dim NumEQ, NumEQB, NumEQW As Double
        Dim PicWW, PicHH As Long

        Lbl_CountB.Text = "0"

        Lbl_CountW.Text = "0"

        Lbl_Status.Text = "Working..."

        Button2.Enabled = False

        '****  チェックする範囲を指定  ******
        PicHH = 100

        PicWW = 100

        '****  黒の数をカウント  *****
        CheckColorB = RGB(0, 0, 0)

        NumEQ = CountNumColor(PicWW, PicHH, CheckColorB)

        NumEQB = NumEQ

        Lbl_CountB.Text = NumEQB

        '****  白の数をカウント  ****
        CheckColorW = RGB(255, 255, 255)

        NumEQW = CountNumColor(PicWW, PicHH, CheckColorW)

        NumEQW = NumEQ

        Lbl_CountW.Text = NumEQW

        '****  黒の閉める割合%  ****

        Lbl_CountBBW.Text = Format((NumEQB / (NumEQB + NumEQW)), "##%")

        Button2.Enabled = True

        Lbl_Status.Text = ""

    End Sub

このプログラムで問題がありましたらぜひとも教えてください。GetPicxel以外の間違いに気づいた人がいた場合もご意見をお待ちしております。また、この質問で分からないことがございましたら遠慮なく書き込んでください。気づき次第返答いたします。


ガッ  2005-11-22 01:04:55  No: 92811

> このプログラムで問題がありましたらぜひとも教えてください。
これとか:Val("Bitmap.GetPixel(x,y)")
…とりあえず外の新鮮な空気を吸いに行ってみてはどうかと。


マルチ  2005-11-22 01:06:29  No: 92812

http://freedom.mitene.or.jp/~sugisita/papa/cgi/korobbs.cgi#FORM


マルチ  2005-11-22 01:07:37  No: 92813

訂正:
http://freedom.mitene.or.jp/~sugisita/papa/cgi/korobbs.cgi


.  2005-11-22 01:39:43  No: 92814

>…とりあえず外の新鮮な空気を吸いに行ってみてはどうかと。
「外の新鮮な空気」と
は他の掲示板で聴く事を言っているのではないと思います。


マルチ  2005-11-22 02:05:28  No: 92815

良識をまず勉強しようね。

http://f57.aaa.livedoor.jp/~jeanne/bbs/faq.cgi?mode=al2&namber=1938&rev=&no=0
http://okwave.jp/kotaeru_reply.php3?q=1792620


とりあえず  2005-11-22 19:04:42  No: 92816

プログラムは、
記述したコードのとおりに動きます。
記述したコードと予測した結果が異なっていても
プログラム上は正しく使用されています。

間違った使用方法では、
通常コンパイルなどのエラーとなります。


kisisuku  2005-11-22 20:52:06  No: 92817

皆さんありがとうございます^^
返信が来て感激です。
はい、検討してがんばりたいと思います^^
変更後また、ご報告いたしますね。


kisisuku  2005-11-24 21:30:16  No: 92818

皆さんありがとうございます。
おかげでこの問題は解決することができました^^
また見かけたらお願いいたしますw


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加