HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0715
ぷりん色を読み取るプログラム3未解決


ぷりん

リンク

2014/7/15(Tue) 22:53:10|NO.62917

color 255,0,0
mes "■"
color 0,0,255
mes "■"
color 0,255,0
mes "■"

pget ginfo(0),ginfo(1)
red = ginfo(16)
green = ginfo(17)
blue = ginfo(18)

color red,green,blue
boxf 100,100

wait 10
loop

ポインタを赤(青、緑)の■に合わせると右下のボックスが赤(青、緑)くなる
ように書いたのですがうまくいきません。
どこがおかしいですか?

それとHSPのウインドウの色ではなくて
ブラウザなどの外部のウインドウの色を取得するにはどうすればいいですか?



この記事に返信する


ZAP

リンク

2014/7/15(Tue) 23:11:03|NO.62918

pget ginfo(0),ginfo(1)

で得られるマウスカーソルの座標は、「デスクトップ全体」の中での座標なので
ウインドウの中での描画先の位置とはズレてる。
試しにマウスカーソル自体を左上に持っていくと、反応して色が変わる位置がある。

自身のウインドウがデスクトップの中で表示されている座標を得て、
ウインドウの中でのマウスカーソルの位置を自分で計算してやる必要があると思う。

ginfoのヘルプを良く読むとヒントがあるかも。



ぷりん

リンク

2014/7/15(Tue) 23:54:05|NO.62919

ほんとですね!
デスクトップの左上にポインタを持っていくと
色が出ました

しかしデスクトップ上の色を認識しないです
デスクトップの壁紙などの色も認識させるにはどうしたらいいでしょうか?



あとrepeatが抜けていました



あり

リンク

2014/7/16(Wed) 09:27:56|NO.62920

デスクトップから色情報を取得するには
デバイスコンテキスト(以後DC)の情報が必要ですが
HSPの標準命令だけでは無理なのでWin32APIを使います。

#include "user32.as" #include "gdi32.as" screen 0, 200, 100 gsel 0, 2 GetDC 0 ; デスクトップ全体のDCを取得 DT_hwnd = stat onexit *exit *main GetPixel DT_hwnd, ginfo_mx, ginfo_my ; マウス座標の色を取得 P_color = stat P_r = P_color & $ff ; カラーコードRを計算 P_g = P_color >> 8 & $ff ; カラーコードGを計算 P_b = P_color >> 16 & $ff ; カラーコードBを計算 title "r=" + P_r + " g=" + P_g + " b=" + P_b color P_r, P_g, P_b boxf wait 10 goto *main *exit ReleaseDC 0, DT_hwnd ; 取得したDCを開放 end
過去スレにも同様の質問があったので、こちらも参考に。
http://hsp.tv/play/pforum.php?mode=pastwch&num=47467



ONION software Copyright 1997-2023(c) All rights reserved.