DOBON.NETプログラミング道掲示板

■35376 / 親記事)  RGB値の所得
  
□投稿者/ ま〜 付き人(60回)-(2023/02/10(Fri) 16:06:29)
  • アイコン環境/言語:[Vs2022 VB] 
    分類:[.NET] 

    また、ハマってます。

    画像のRGB値を取りたい思っています

    下記のコードで特定の画像でエラーとなります
    エラーにならない画像もあります
    また、何か間違ってますでしょうか?

    PictureBox1.Size = New System.Drawing.Size(320, 160)
    PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage

    Dim X, Y As Integer
    Dim Picture00 As Bitmap
    Dim RGB As Long

    Picture00 = CType(PictureBox1.Image, Bitmap)

    For Y = 0 To PictureBox1.Height - 1
    For X = 0 To PictureBox1.Width - 1
    RGB = Picture00.GetPixel(X, Y).ToArgb()

    ’下記はエラー内容 この時のXの値は307です
    System.ArgumentOutOfRangeException
    HResult=0x80131502
    Message=パラメーターは正の値で、幅より小さい値を指定しなければなりません。
    パラメーター名:x
    Source=System.Drawing
    スタック トレース:
    at System.Drawing.Bitmap.GetPixel(Int32 x, Int32 y)

    以上、よろしくお願いします
マルチポストを報告
違反を報告
引用返信 削除キー/
■35377 / ResNo.1)  Re[1]: RGB値の所得
□投稿者/ Hongliang 大御所(637回)-(2023/02/10(Fri) 16:45:57)
  • アイコン多分、Picture00.Widthが307になっていると思います。
    > PictureBox1.Size = New System.Drawing.Size(320, 160)
    > PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
    これはPictureBox1が表示する際に画像を引き延ばしているだけで、実際のBitmapオブジェクトの縦横が変わるわけではありません。

    Bitmapオブジェクト自体の縦横を変更したいなら、簡単には
    Dim 新ビットマップ = New Bitmap(元ビットマップ, 変更後のサイズ)
    みたいに書くことができます。
    // ちゃんと補間するとなるとGraphicsオブジェクトを使う必要が出てきますが。
違反を報告
引用返信 削除キー/
■35378 / ResNo.2)  Re[2]: RGB値の所得
□投稿者/ ま〜 付き人(61回)-(2023/02/13(Mon) 15:20:25)
  • アイコンNewの使い方が曖昧だったのですが
    使い方ようやく分かりました

    ありがとうございます

解決み!
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -