投稿
キヨ papihime
RGB(R,G,B)で作った論理色コードとGSPOIT(X,Y)で抽出した論理色コードが一致しないんですがこれって何故なんでしょうか?分かる方いませんでしょうか??
4そうだね
プレイ済み
返信[1]
親投稿
もやしもどき Pseudomoyashi
グラフィック関連の命令で色を指定する際はRGB各256段階で指定するようになっていますが、実際にプチコン上で表示出来る色がRGB各32段階でしかないことが原因で起こります。 描画された時点で端数(8で割った余り)の情報が消えてしまうため、GSPOITで再度取得した際のRGBの各値は (元の値 AND 248)の結果となってしまうので、比較なんかを行う際には注意が必要です。
0そうだね
プレイ済み
返信[2]
親投稿
キヨ papihime
うあ。なるほどー。そういうカラクリだったんですね! X,Yの位置をRGB(255,0,0)の赤色として指定して A=GSPOIT(X,Y) IF A == RGB(255,0,0) THEN ○○ としたいのですが。 この場合どう書いたらいいんでしょうか?
0そうだね
プレイ済み
返信[3]
親投稿
スー thanks_0u0
スポイトで色を取得した際は、RGB32段階の内部値を8倍した数値になるので、0,8,16,24,32,,,,,248、となり248が最高値です。ですので、 IF A==RGB(248,0,0) THEN〜 とすれば、きっと動くと思いますよ( ´ ▽ ` )ノ
0そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
IF A==(RGB(255,0,0) AND &HFFF8F8F8) THEN ○○ としてはどうでしょうか?8で割った余りの部分は0になって しまうので比較する方もこの部分は0として扱うって事なら 判定できると思います。 または DEF GSPRGB(R,G,B) RETURN RGB(R,G,B) AND &HFFF8F8F8 END というユーザー関数を作って IF A==GSPRGB(255,0,0) THEN ○○ とする方法もあります。
0そうだね
プレイ済み
返信[5]
親投稿
ちーたけ hello.world256
配列変数で疑似VRAMもあるいは…
0そうだね
プレイ済み
返信[6]
親投稿
キヨ papihime
なるほどー。色々手があるんですね。とりあえずRGBを使うときは8の倍数で使うように気をつけて使うのが簡単ですかねー。
0そうだね
プレイ済み