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

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
いとちゃん

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

#1 投稿記事 by いとちゃん »

Ver262を使っておりますが。。(すみません)

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

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

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

どなたか、このへんについてお詳しい方、追加解説をお願いいたします。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 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
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
いとちゃん

ありがとうございます。

#3 投稿記事 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 までを持っているんですね。

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

ありがとうございました。
返信する