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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■1938  困っています
□投稿者/ kisisuku -(2005/11/21(Mon) 15:35:50)

    分類:[VB.NET] 


    分類:[VB.NET] 

    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以外の間違いに気づいた人がいた場合もご意見をお待ちしております。また、この質問で分からないことがございましたら遠慮なく書き込んでください。気づき次第返答いたします。

親記事 /0過去ログ2より / 関連記事表示
削除チェック/

■10291  [SQL Server]トリガー(trigger)を利用して
□投稿者/ call you -(2007/11/15(Thu) 09:42:30)

    分類:[.NET 全般] 

    おはようございます。

    [SQL Server]トリガー(trigger)を利用して
    外部プログラムを実行したいです。

    戻り値は 0 (成功) で 成功結果を出したばかりで、
    実際外部プログラム(例えば:.exe)は実行されなかったんです。

    よろしくお願いします。
親記事 /過去ログ23より / 関連記事表示
削除チェック/

■65858  Re[3]: Linq 直積のクエリ式とメソッド形式の変換
□投稿者/ poti -(2013/03/20(Wed) 22:49:10)
    ありがとうございました。
記事No.65851 のレス / END /過去ログ111より / 関連記事表示
削除チェック/

■69352  Re[3]: ASP.NETで画像のリンクの貼り方
□投稿者/ WebSurfer -(2013/12/18(Wed) 16:03:12)
    No69351 (くま さん) に返信
    > イメージはWebサイトに表示する画像のイメージです。
    > ImageButtonだと見た目がどうなるのかが気になります・・・

    実際にやってみましょうよ。

    それがどう表示されるか、html コードでどうなるか、自分の求めるものと違
    うのか、ここに質問を書く時間があれば確認できますよね。
記事No.69348 のレス /過去ログ118より / 関連記事表示
削除チェック/

■87350  Re[2]: datatableの条件抽出について
□投稿者/ kenta -(2018/05/14(Mon) 13:19:55)
    □投稿者/ 魔界の仮面弁士 (1662回)-(2018/05/14(Mon) 12:36:50)
    No87344 (kenta さん) に返信
    > 条件:列Aにおいて6以上を抽出
    この場合は、A列が「6」の行と、A列が「7」の行が得られれば良いのですね?
    ⇒その通りです。


    急いでPCに入力してしまったために、入力ミスが多く出てしまいました。
    すいません。

    再びコードを表示するとともに、さらに詳細に記入ます。


    DataRow[] ary = ds.Tables["TableA"].Select("A>=700");
    foreach (var columns in ary)
    {
    Console.WriteLine(columns["A"]);
    }
    Console.WriteLine();

    ■取り込んだCSVデータは以下のデータです(とりあえずA列のみ)

    A  B  C  D  E
    1
    2
    3
    .
    .
    .
    800


    ■出力結果(本来は縦に出力されるが、ここではそれを横に並べる) 

    100,101,102,103,104,105,106,107,108,109,11,110,111,................798

    ↑(なんで11?)      ↑(800ではないの?)


    以上、よろしくお願いします。
記事No.87344 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87351  Re[3]: datatableの条件抽出について
□投稿者/ 魔界の仮面弁士 -(2018/05/14(Mon) 15:01:33)
    2018/05/15(Tue) 11:43:46 編集(投稿者)

    No87350 (kenta さん) に返信
    > 取り込んだCSVデータは以下のデータです(とりあえずA列のみ)
    Console.WriteLine( ds.Tables["TableA"].Columns["A"].DataType.FullName );
    は "System.Int32" でしょうか。"System.String" でしょうか。あるいはそれ以外?


    もしも String だとすると、"1" < "1ab" < "2" の関係が成り立つので、
    大小関係が "1" < "10" < "2" の並びになること注意してください。


    > DataRow[] ary = ds.Tables["TableA"].Select("A>=700");
    今度は「700以上」にしたいのですね?


    > ,11,
    > ↑(なんで11?)
    あれ? 「700以上」なのに 100 が現れた点はスルーですか?
    条件は「A>=100」というわけでも無いですよね。

    No87344 の条件は「A>=6」でしたが
    No87350 の条件は「A>=700」で良いのですよね?



    > ,798
    > ↑(800ではないの?)

    static void Main(string[] args)
    {
      // TableA の A 列は int 型
      // TableB の A 列は string 型
      var ds = new DataSet();
      ds.Tables.Add("TableA").Columns.Add("A", typeof(int));
      ds.Tables.Add("TableB").Columns.Add("A", typeof(string));
      for (int a = 1; a <= 800; a++)
      {
        ds.Tables["TableA"].Rows.Add(a);
        ds.Tables["TableB"].Rows.Add(a.ToString());
      }
      ds.AcceptChanges();

      // 上記までは事前準備
      // 以下は No87350 のコードの検証

      Console.WriteLine("int 比較なら問題は無い");  // 1 < 2 < 10 の関係
      DataRow[] ary = ds.Tables["TableA"].Select("A>=700"); // int比較
      foreach (var columns in ary)
      {
        Console.Write(columns["A"] + ",");
      }
      Console.WriteLine();
      Console.WriteLine();

      Console.WriteLine("string比較の場合は注意");  // "1" < "10" < "2" の関係
      // https://social.msdn.microsoft.com/Forums/ja-JP/6f99460f-ffae-40ce-b96b-ab1670ee977f/
      // 上記の理由により、下記はエラーになりえるので、指定してはいけない
      // ary = ds.Tables["TableB"].Select("A>=700"); // 型が違う
      // なので、こう書かねばならない(それが期待する結果であるかは別として)
      ary = ds.Tables["TableB"].Select("A>='700'"); // string比較
      foreach (var columns in ary)
      {
        Console.Write(columns["A"] +",");
      }
      Console.WriteLine();
      Console.WriteLine();

      // あるいは…
      Console.WriteLine("CONVERT関数でまとめてからという手もあるが、効率は落ちる");
      ary = ds.Tables["TableB"].Select("CONVERT(A, System.Int32)>=700"); // int比較
      foreach (var columns in ary)
      {
        Console.Write(columns["A"] +",");
      }
      Console.WriteLine();
      Console.WriteLine();


      Console.ReadLine();
    }
記事No.87344 のレス /過去ログ150より / 関連記事表示
削除チェック/

■90004  Re[13]: リッチテキストボックスでカラー情報をコピーする方法
□投稿者/ 魔界の仮面弁士 -(2019/01/29(Tue) 13:11:26)
    No90001 (イエメン さん) に返信
    > コピーすることで、Excel上でセルを選択している表示は解除されることを確認できました。
    > しかし、Excel上でペーストしてもデータが代入されません、

    Excel に対する CutCopyMode のキャンセル処理と
    RichTextBox からのコピー処理を、
    同じイベント内に続けて記載していませんか?

    メッセージループが回らないと、クリップボードは処理されませんので、
    CutCopyMode を操作するためのボタンだけを、単独で配置してみてください。


    一回のボタン操作で行われるようにしたいのなら、
    CutCopyMode を操作した後のクリップボード処理を遅延実行させてみてください。

    たとえば Application.Idle イベントで処理させるようにするとか、
    Control.BeginInvoke なり Task.ContinueWith メソッドなりに分けるとか。
記事No.89928 のレス /過去ログ155より / 関連記事表示
削除チェック/

■97232  Re[1]: FileStreamを閉じずにファイル名を変更する方法
□投稿者/ Hongliang -(2021/04/18(Sun) 17:37:51)
    File.OpenReadではなくてFile.Openの方であれば、FileShareを指定できるオーバーロードがあります。
    これでFileShare.Deleteを指定すれば、ほか(自プロセス他プロセス問わず)で名前変更できるようになります。
    なお途中でリネームされても、File.Openで開いたFileStreamはちゃんとそのファイルを追跡してくれます。
記事No.97228 のレス /過去ログ168より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -