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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1123
nyoromopgetで色情報をとれない!10解決


nyoromo

リンク

2008/11/23(Sun) 15:49:28|NO.20974

他の言語でプログラミングを経験しており、HSPもやってみようと最近始めたのですが。。。
マウスがおいてある色情報を表示させたいのですが、うまくいきませんでした。常に255,255,255という情報が出てきます。


repeat pget ginfo_mx,ginfo_my title "R:"+ginfo_r+" G:"+ginfo_g+" B:"+ginfo_b wait 10 loop

タイトルの部分に出力させるのが簡単だと思い、このように組みました。マウスのある場所の色情報がうまくとれていないということですか?

もう一つ質問があるのですが、ginfo_mxをmousexにした場合、うまくいきませんでした。原因はなんでしょうか。
よろしくおねがいします。



この記事に返信する


レノス

リンク

2008/11/23(Sun) 16:14:11|NO.20975

そのスクリプトのまま実行すると、画面全体が真っ白のままなので
255, 255, 255 (白) になって当然ですが……?

pget命令はクライアント領域の座標を渡さなければいけないので、
ginfo_mx ではなく、mousex じゃなきゃダメです。


color 255 : boxf 60, 80, 240, 240 color ,,255 : boxf 90, 90, 180, 180 repeat pget mousex, mousey title "R:"+ ginfo_r +" G:"+ ginfo_g +" B:"+ ginfo_b wait 10 loop



名前はまだ無い

リンク

2008/11/23(Sun) 16:22:37|NO.20976

やりたいことを見る限り、スクリーンから色を取得したいようですね。
その為には一度スクリーン全体を取得して、クライアント領域にコピーしてやる必要があります。
それからpgetを使えば問題ありません。
どこかに画面を簡単に取得できるモジュールか何かあった気がしますが…



nyoromo

リンク

2008/11/23(Sun) 16:27:58|NO.20977

早速の返信ありがとうございました。
たしかに教えていただいたものを実行しましたらうごきました。感動してしまいましたw

スクリーン座標でのある座標の色情報を読み取りたいのですが、
その場合は、その該当するウィンドウをアクティブにして、そのウィンドウにおける座標で色情報のほしい座標を指定すればいいということでしょうか?
質問を重ねて申し訳ありません。



nyoromo

リンク

2008/11/23(Sun) 16:34:32|NO.20978

>>名前はまだないさん
クライアント領域とは、プログラムを実行してでてくるウィンドウのことでしょうか?
もしそのほうほうをつかうならば、ウィンドウの大きさをスクリーンと同じに設定して、その後、画面全体を複写して、そのあとpgetで色情報をとる、この手順でよろしいでしょうか。

なかなかいい方法が思いつきません。。。。



名前はまだ無い

リンク

2008/11/23(Sun) 17:37:24|NO.20979

大雑把に言うとクライアント領域というのは、HSPが描画可能な範囲です。
要はウィンドウのことといっても間違いじゃないです。

bufferという命令を調べてみてください。
ginfo関数の中にスクリーンのサイズを取得できるものもあるので、サイズはそれで調整。
そこにスクリーンからコピーしてきて貼り付ければ後はお考えになっている通りです。
ちなみにHSP本体のウィンドウが邪魔であればgselやwidthも調べてみましょう。
HSPの画面はアクティブでない時でも動作しますのでご安心ください。

画面取得の方法ですが、どこかでモジュールが配布されているはずですので、
クリップボードや、HSP等のキーワードでお探しください。



nyoromo

リンク

2008/11/23(Sun) 18:02:33|NO.20980

とてもわかりやすい説明ありがとうございます。別にアクティブでなくてもクライアント領域は存在するのですね。
クライアント領域に画面を複写してpgetで読み取る。やってみます。
今回はどうもありがとうございました。参考になりました。



New Monkey

リンク

2008/11/23(Sun) 18:03:59|NO.20981

> 他の言語でプログラミングを経験しており

APIを使えるなら
GetDCでディスプレイのデバイスコンテキストを取得→GetPixelで色情報を取得
の方が簡単かも・・・



とおりすがり

リンク

2008/11/23(Sun) 19:00:52|NO.20985

>APIを使えるなら
つーか、API使うしかないでしょこれ。


#include "user32.as" #include "gdi32.as" repeat wait 10 GetDC 0 : dc=stat GetPixel dc, ginfo_mx, ginfo_my : col=stat color col & 255, (col >> 8) & 255, col >> 16 boxf 0, 0, 100, 100 ReleaseDC 0, dc loop

これしかないんで無いかい?



New Monkey

リンク

2008/11/23(Sun) 19:15:20|NO.20986

画面をキャプチャするモジュールがあるようですが
いったんHSPの画面にコピーしてpgetするという手順で回りくどいので
直接APIを使う(=とおりすがりさんの方法)方がいいかも、というわけです



nyoromo

リンク

2008/11/23(Sun) 21:06:09|NO.20987

上記のスクリプトを実行しました、しっかり色情報を読み込んでくれています!
どういう仕組みで動いているか理解して、使いこなせるようにしたいとおもいます。
私のしたいことを上記のスクリプトでまかなうことができたので、是非使わせていただきます。
本当にありがとうございました。



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