3つのそれぞれの点の色の値を取得して黒か白かを判定しています。
今はそれぞれの値について判定しているのですが
3つの値を2進数又は16進数にしていっぺんに判定したいのですが
3つの値を16進数にするにはどのようにしらたよいですか?
どなたか教えていただけませんか?お願いします
何が言いたいのかよく分かりませんが……。
16進数にするにはHex関数を使います。
うーむ。
> 3つのそれぞれの点の色の値を取得
の"3つ"はどの単語を修飾してるんでしょう???
『点』?…なら点が3つあって色の値は Long 型で取得したものが3つある?
いや、黒か白かを判定してるって事はすでに2値?Boolean 型?
『色の値』?…なら色の要素3つ…つまりRGB値のそれぞれの要素で取得してる?
それぞれ Integer 型で3つの要素を持ってるって事?
普通に、数値型の変数を2進数又は16進数で表現する…のは
nanashi さんのおっしゃる方法とか…過去ログにもありそう…
RGB 値3つの値を1つの変数にしたいのなら…そのまんまな RGB 関数を使ってみて下さい。
3つは点を修飾してます。
1つの点に対して色をRGBで取得して黒か白のどちらか
というところまでは判定しています。
ですが、3つの点の真、偽を一緒に表示したいので
16進数で表したいのです。
過去のログもみましたが2進数を16進数等に直すものしかなくて・・・
伝わりますかね?国語力のなさを実感しました。
おねがいします。
>3つの点の真、偽を一緒に表示したい
というのはどういう処理なのでしょうか
3つの点が全て同じ色だったらTRUEということ?
そうであれば16進数に変換するまでもないと思いますが
数値の比較をするなら何進数で表現しようが元の値は
変わりませんので変換する必要はないですよ。
(というか変換してもなにもかわらない)
>3つの点が全て同じ色だったらTRUEということ?
はい。そのようなことがしたいのです。
>そうであれば16進数に変換するまでもないと思いますが
変換しなくてもできるというのはわかりますが
プログラムがわかりにくくなるため3つの真偽を
16進数にしたいのです
まだいまいち意味が分からないんだけど。
>3つの真偽を16進数にしたいのです
例えば『True False True』を&H5(2進数だと101)であらわしたいってことですか??
>例えば『True False True』を&H5(2進数だと101)であらわしたいってことですか??
はいそうです。True False Trueという値を
1つづつ取得して判定しているため
&H5(2進数だと101)という形であらわしたいのです。
うまく伝えられなくてすいません。
どーでしょう?
整数型変数に整数値を代入するのに型変換なんてものはありませんので
「表したい」というのはテキストボックスか何かに「5」という文字を
出力するってことですよね?
だとすると、白を1、黒を0としてa,b,cがそれぞれの点の値とすると
d=a*2^2+b*2^1+c
で0ビット目がc、1ビット目がb、2ビット目がaとなります。
Text1.Text=hex$(d)
とすれば16進数で表現された「文字」が出力されます
ありがとうございます。わかりました。
勘違いをしてました
Hex(picture1.Point(X, Y))="FFFFFF" ←白
Hex(picture1.Point(X, Y))="0" ←黒
たぶんこのことかな・・・・?
追記
Hex(R) & Hex(G) & Hex(B) = "FFFFFF"
か
Hex(R+G+B) = "FFFFFF" (+でできるかな?)