新しく発言する EXIT インデックスへ
R値・G値・B値の求め方

  R値・G値・B値の求め方 大久保博史 2004/01/11 13:53:26 
  askpixelvalueで求まるのはその点の色に対応... 白石和夫 2004/01/11 17:57:07 
   └ご回答ありがとうございました。次のように... 大久保博史 2004/01/11 19:07:18 

  R値・G値・B値の求め方 大久保博史 2004/01/11 13:53:26  ツリーへ

R値・G値・B値の求め方 返事を書く
大久保博史 2004/01/11 13:53:26
ASK PIXEL VALUE (x,y) a
を使うと任意の点の色指標をaに代入できますが、次の

picture mas
plot area : 0,0;0,.01;.01,.01;.01,0
end picture

for x=0 to 1 step 0.01
for y=0 to 1 step 0.01
set color mix(iro)y,.5,x
set area color iro
draw mas with shift(x,y)
next y
next x
get point: x, y
ask pixel value (x,y) a
print a
end

で使うと a=-1 になってしまいます。 
上で出力されるような連続した色の、任意の点のR値,G値,B値を求めるにはどうすればいいでしょうか。どなたか教えてください。

  askpixelvalueで求まるのはその点の色に対応... 白石和夫 2004/01/11 17:57:07  ツリーへ

Re: R値・G値・B値の求め方 返事を書く
白石和夫 2004/01/11 17:57:07
ask pixel value で求まるのはその点の色に対応する色指標です。色指標に対する色が変化してしまっているので,色に対する色指標が存在しないので-1になります。
JIS規格の範囲内で処理するためには,まず
ASK MAX COLOR n
を実行してシステムで利用可能な色指標の最大値を取得します。十進basicの現バージョンではこの数は必ず255です。255以下の各色指標に対してSET COLOR MIX で任意の色を割り当てることができます。
ただし,画面の初期色が色指標0なので,色指標0に対する色は変えないほうがいいでしょう。

SET POINT STYLE 1
ASK MAX COLOR n
SET WINDOW 0,n,0,n
FOR i=1 TO n
SET COLOR MIX (i) i/n,1,1-i/n
SET POINT COLOR i
PLOT POINTS: i,i
NEXT i
FOR i=1 TO n
ASK PIXEL VALUE (i,i) v
PRINT i,v
NEXT i
END

JISを無視してよいのであれば,SET COLOR MODE "NATIVE" を実行して,色指標=色(=Windowsの色番号)の状態で使ってください。Windowsの色番号は,RGB各色を0から255の段階で表現して,r + 256*g + 65536*b です。



   └ご回答ありがとうございました。次のように... 大久保博史 2004/01/11 19:07:18  ツリーへ

Re: askpixelvalueで求まるのはその点の色に対応... 返事を書く
大久保博史 2004/01/11 19:07:18
ご回答ありがとうございました。  次のようになりました。

set color mode "native"
picture mas
plot area : 0,0;0,.01;.01,.01;.01,0
end picture

for x=0 to 1 step 0.01
for y=0 to 1 step 0.01
set area color COLORINDEX(y,.5,x)
draw mas with shift(x,y)
next y
next x
get point: x, y
ask pixel value (x,y) a
print a
let b=int(a/65536)
let g=int((a-b*65536)/256)
let r=mod(mod(a,65536),256)
print "r g b=";r;g;b
end


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。