ページ 11

Pointの24ビットデータについて

Posted: 2006年3月08日(水) 08:54
by いとちゃん
Ver262を使っておりますが。。(すみません)

Point( )で、特定座標のRGBがとってこれます。
24ビットデータということなので分離したいのですが。

結果は倍精度の符号付10進データで来ますので。
調理の方法に困っています。

いい関数などがすでにあるのでしょうか?
(ひたすらヘルプを読んでいますが、なかなか分かりません)

どなたか、このへんについてお詳しい方、追加解説をお願いいたします。

Posted: 2006年3月08日(水) 14:29
by konisi
手抜きですが次のコードを試してみてくだされ。
4.13のコードからちょっと引っ張ってきたので2.62で動く保障はありませんが。

コード: 全て選択


'定義
FF=255
GetBasicColor(0)=RGB(0,0,0)
GetBasicColor(1)=RGB(0,0,FF)
GetBasicColor(2)=RGB(FF,0,0)
GetBasicColor(3)=RGB(FF,0,FF)
GetBasicColor(4)=RGB(0,FF,0)
GetBasicColor(5)=RGB(0,FF,FF)
GetBasicColor(6)=RGB(FF,FF,0)
GetBasicColor(7)=RGB(FF,FF,FF)
'ここからメインプログラム
X=1
Y=1
PSet (X,Y),RGB(255,0,0)
A=Point (X,Y)
'ここからRGB値の取り出し
If A<0 Then
	ColorCode=Abs(A)
Else
	ColorCode=Abs(GetBasicColor(A))
End If
Red=ColorCode Mod 256
Green=Int(ColorCode/256) Mod 256
Blue=Int(ColorCode/65536) Mod 256
'ここから表示
Print Red
Print Green
Print Blue

追記:2.62で動作確認。 '06/3/8 21:05

ありがとうございます。

Posted: 2006年3月09日(木) 00:37
by いとちゃん
なるほどですね。

では、BB GG RR の順で
   00 00 00 から
   FF FF FF までを持っているんですね。

ということは

RRの値+(GGの値*256)+(BBの値*256*256)

の逆をすれば分離できるということですね。

符号付は、符号無視。ないしは、符号を昇降順と考えると。

   RR GG BB の順で
   00 00 00 から
   FF FF FF までを持っているんですね。

なんとなく、処理が見えてきました。

ありがとうございました。