指定座標のRGB値を取得(U) <TOP>
指定座標のRGB値を取得します。
GetCursorPos マウスカーソル(マウスポインタ)の現在の位置に相当するスクリーン座標を取得
GetPixel 指定された座標のピクセルのRGB値を取得
GetWindowDC ウィンドウ全体のデバイスコンテキストを取得
ReleaseDC デバイスコンテキストを解放
例ではウインドウ全体のデバイスコンテキストを取得し、カーソル位置のRGB値を取得し、その値および色を表示しています。
色あわせに使うことが多いので、exeファイルにしてみました。
'================================================================ '= 指定座標のRGB値を取得 '= (GetPixel2.bas) '================================================================ #include "Windows.bi" Type POINTAPI x As Long y As Long End Type ' マウスカーソル(マウスポインタ)の現在の位置に相当するスクリーン座標を取得 Declare Function Api_GetCursorPos& Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) ' 指定された座標のピクセルのRGB値を取得 Declare Function Api_GetPixel& Lib "gdi32" Alias "GetPixel" (ByVal hDC&, ByVal X&, ByVal Y&) ' ウィンドウ全体のデバイスコンテキストを取得。0(NULL)を指定すると、スクリーン全体のデバイスコンテキストを取得 Declare Function Api_GetWindowDC& Lib "user32" Alias "GetWindowDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) Var Shared Timer1 As Object Var Shared Picture1 As Object Var Shared Text(6) As Object Timer1.Attach GetDlgItem("Timer1") Picture1.Attach GetDlgItem("Picture1") For i = 0 To 6 Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) Text(i).SetFontSize 14 Next '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Timer1.SetInterval 10 Timer1.Enable -1 End Sub '================================================================ '= '================================================================ Declare Sub Timer1_Timer edecl () Sub Timer1_Timer() Var pAPI As POINTAPI Var Col As String Var lColor As Long Var lDC As Long Var Ret As Long lDC = Api_GetWindowDC(0) Ret = Api_GetCursorPos(pAPI) lColor = Api_GetPixel(lDC, pAPI.x, pAPI.y) Picture1.SetBackColor lColor Picture1.cls Col = Right$("000000" & Hex$(lColor), 6) Text(1).SetWindowText Right$(Col, 2) Text(2).SetWindowText Mid$(Col, 3, 2) Text(3).SetWindowText Left$(Col, 2) Text(4).SetWindowText Trim$(Str$(Val("&H" & Right$(Col, 2)))) Text(5).SetWindowText Trim$(Str$(Val("&H" & Mid$(Col, 3, 2)))) Text(6).SetWindowText Trim$(Str$(Val("&H" & Left$(Col, 2)))) Ret = Api_ReleaseDC(0, lDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End