getpixelのRGB値を表示するには(初心者です)

解決


師走  2005-12-07 01:06:39  No: 128615

Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
    Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Int32

    Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim hTargetWin As Long    '対象のウィンドウのハンドル
        Dim hTargetDC As Long    'デバイスコンテキストへのハンドル
        '①
        hTargetWin = WindowFromPoint(10, 10)
        '②
        hTargetDC = GetDC(hTargetWin)

        Dim lngcolor As Long
        Dim RGB As Color
        '③
        lngcolor = GetPixel(hTargetDC, 10, 10)
        ReleaseDC(hTargetDC, hTargetWin)
    
    End Sub
メッセージボックスにRGB値を表示させたいのですが出来ません。
ここからMsgboxを追加したらいいと思うのですが思うように出来ません。


AAA  2005-12-07 01:26:04  No: 128616

開発環境は?


魔界の仮面弁士  2005-12-07 02:06:10  No: 128617

> Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
これは、VB6/VBAの場合の宣言ですね。
もしも VB.NET なら、
  Public Structure Point
    Dim X As Integer
    Dim Y As Integer
  End Structure 
  Public Declare Function WindowFromPoint Lib "user32" (ByVal Pnt As Point) As IntPtr
のようになるのでしょう。

> Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Int32
これは VB6/VBA、VB.NET いずれの宣言でもありませんね。
VB6/VBA だとしたら、
  Public Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
でしょうし、VB.NET だとしたら、
  Public Declare Function GetDC Lib "user32" (ByVal hWnd As IntPtr) As IntPtr
になるかと。

また、GetPixel の宣言も、VB6/VBA向けの記述になっているようです。

> ここからMsgboxを追加したらいいと思うのですが思うように出来ません。
追加したらまずいでしょう。
Timer で定期的に メッセージが上がって来たら、邪魔じゃないですか?


Blue  2005-12-07 02:26:46  No: 128618

元ねた
http://madia.world.coocan.jp/vb/vb_bbs/200409_04090098.html
ッポイですね。
引用したならばそのようなコメントを入れるべきです。

> 開発環境
大事そうですね。

丸付き数字は機種依存文字です。Web上での使用は控えてください。


師走  2005-12-07 20:41:35  No: 128619

引用したことを記入せず、コメント不足ですいませんでした。
開発環境はVB.NET です。
たとえば、その情報をtextに保存する方法はどのようにすればいいんでしょうか?


あぶ  2005-12-07 21:15:05  No: 128620

時間に制約がなさそうですので
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcn7/html/vaconfileaccesswithvbnet.asp
あたりをじっくりと読まれることをお勧めします。


AAA  2005-12-07 22:48:46  No: 128621

>開発環境
>>大事そうですね。

大事なことだと思いますが...


師走  2005-12-08 00:06:47  No: 128622

解決することができました。ありがとうございます。

Dim file As New System.IO.StreamWriter("c:\test.txt")
file.WriteLine("Here is the first line.")
file.Close()

例えばここにgetpixelで取得したRGB値を記入したいのですが、どのようにすればいいでしょうか?


Blue  2005-12-08 00:58:39  No: 128623

> 例えばここにgetpixelで取得したRGB値を記入したいのですが
RGBを取得したい対象はドコでしょうか?
Bitmapであるならば、APIを使わなくても簡単にできるんですけど。。。
(Graphicsでもやろうと思えばできるかな?)

>開発環境
>>大事そうですね。
この発言は、自分の予想ではなく、相手に開発環境の明示を促すように書いたつもりでした。
明示しなきゃ解決までなかなか行きませんよといいたかったわけです。


師走  2005-12-08 01:08:59  No: 128624

>Blueさん返信ありがとうございます。
例えばデスクトップの画面(1280*1024)において(10,10)の位置のRGB値を取得するにはどのようにしたらいいでしょうか?
また、ゲーム等の画面(640*480)において(10,10)の位置のRGB値を取得するにはどのようにしたらいいでしょうか?


あぶ  2005-12-08 01:18:04  No: 128625

>RGB値を取得するにはどのようにしたらいいでしょうか?

元ネタでも、このスレでも既に魔界の仮面弁士さんが答えてらっしゃいますけど。
http://madia.world.coocan.jp/vb/vb_bbs/200409_04090098.html


Blue  2005-12-08 01:27:29  No: 128626

> デスクトップの画面
APIでですが、
GetDisktopWindowとGetWindowDCを使えば、ディスクトップのデバイスコンテキストが取得できます。
> ゲーム等の画面
も、
FindWindowとか使って、ウィンドウハンドルを取得できれば、デバイスコンテキストは取得できます。

>RGB値を取得
とは、Rがいくつで、Gがいくつでということでしょうか?
GetPixelどのような値を返しているか分かればこれは簡単だと思いますけど。


師走  2005-12-08 01:39:56  No: 128627

すいません。まだまだ分からないことばかりでした。
このようにしてみたのですが
   Public Function GetPixel( _
   ByVal x As Integer, _
   ByVal y As Integer _
) As Color
        x = 100
        y = 100

    End Function

    
End Class

実行してもなにも起こらないのですがなぜでしょうか?
また、これで(100,100)のRGB値は取得できているのでしょうか?


Blue  2005-12-08 01:44:33  No: 128628

引数とか戻り値とかAPI宣言と一致していますか?
hDC(デバイスコンテキスト)指定しなきゃ、どこにたいしてのRGB値なんだか分からないですよ。


Blue  2005-12-08 01:45:44  No: 128629

> 引数とか戻り値とかAPI宣言と一致していますか?
と、思ったらAPIの使い方もなっていないようですが。。。


師走  2005-12-08 01:51:21  No: 128630

すいません。APIの使い方も分かりません。
HP(VB中学校)を参考に勉強を進めているのですが、まださっぱり分かりません。まず、言葉の意味から調べないといけないということが分かりました。ありがとうございました。


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

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






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