HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0901
℃6カラーパレットから16進数に変換されたコードと色表示6未解決


℃6

リンク

2007/9/1(Sat) 19:13:36|NO.10839

はじめまして、今HTML用の16進数カラー表記が出来るスクリプトの作成をしていたのですが
ボタンを押してカラーパレットを表示させるところまでは成功しているのですが、
コピペできる状態のBOXの中に16進数変換後のコード(FFFFFFや000000)等の表示や
そのカラーの反映が上手くできません。

書いているソースですと、カラーコードとまでは表示されるのですが
どのカラーを選択しても000となってしまいます。

解決方法を教えてください。



*iro pos 500,8 dialog "",33 r=rval:g=gval:b=bval mes"カラーコード"+r+g+b+""



この記事に返信する


ave

リンク

2007/9/1(Sat) 19:24:56|NO.10840

*iro
pos 500,8 dialog "",33 r=ginfo_r:g=ginfo_g:b=ginfo_b mes"カラーコード"+r+","+g+","+b+""
rvalとかは、HSP2.6の書き方だったような気がします。
HSP3.0では上記のようにginfoを用いてください。
ちなみに℃6さんの書き方だと数値がくっついて表示されて何が何だか
わかりにくいので、RGB値の間に,をつけました。



℃6

リンク

2007/9/1(Sat) 20:04:08|NO.10842

なるほど。 古い表記をしてしまっていたみたいですね。

aveさんから教えていただいたソースを参考に(ほぼそのままになってしまっていますが)


*iro pos 500,8 dialog "",33 r=ginfo_r:g=ginfo_g:b=ginfo_b sdim buf,100 buf=""+r+","+g+","+b+"" flg=4 mesbox buf,100,20,flg+4,0

このように改良してみました。
これでコピー出来るようにはなったのですが、
mesboxの左もしくは右に20*20枠でカラーサンプルが出るようにするには
どのようにすればいいでしょうか。

16進数に変換に str r,18:str g,18:str b,18 では動かなかったのですが
これも古い表記となってしまうのでしょうか?

質問が続いてしまい申し訳有りません。



℃6

リンク

2007/9/1(Sat) 20:43:31|NO.10845

boxfで指定して表示させる事は成功しました。

ですが、16進法に治すという重要な要素だけ解決できないままとなっています。

現在先ほどのソースが


*iro pos 500,8 dialog "",33 r=ginfo_r:g=ginfo_g:b=ginfo_b sdim buf,100 buf=""+r+""+g+""+b+"" flg=4 mesbox buf,100,20,flg+4,0 color ginfo_r,ginfo_g,ginfo_b boxf 162,8,200,30 if (rval<127)or(gval<127)or(bval<127) {color 255,255,255} if (rval>=127)or(gval>=127)or(bval>=127) {color 0,0,0} stop

このようになりました。

これで色が表示されるようにはなっています。



Kpan

リンク

2007/9/1(Sat) 20:55:10|NO.10846

strf関数を調べてください。



GENKI

リンク

2007/9/1(Sat) 20:55:38|NO.10847

> コピペできる状態のBOXの中に

意味が良くわかりませんが、dialog命令によるカラー選択ダイアログの使い方ならヘルプブラウザにサンプルつきで載ってます。

> そのカラーの反映が上手くできません。

color命令参照。

> どのカラーを選択しても000となってしまいます。

それはそうです。rval,gval,bvalはHSP3からはただの変数ですから。そのスクリプトでは何も代入されていないので初期値の0になったままです。
解決方法はaveさんの解説のとおりです。また、これもdialog命令にサンプル付きで記載されいます。

とにかく質問する前に、F1キーを押してヘルプを参照してください。


> 16進数変換後のコード(FFFFFFや000000)等の表示や

さて、dilaog命令で取得される色情報は10進数です。16進数で表示するには一工夫必要ですね。

参考になるサイト
http://lhsp.s206.xrea.com/hsp_tips9.html
http://hspwiki.tm.land.to/?%BE%AE%A5%EF%A5%B6%2F%A5%D3%A5%C3%A5%C8%C1%E0%BA%EE#u37081e2

自分でも気になったのでちょっと書いてみました。

r = 16 g = 0 b = 255 c = strf ("%02x", r) + strf ("%02x", g) + strf ("%02x", b) mes "#" + c clr = int ("$" + binary) ; int関数 rr = clr>>16 & $FF gg = clr>> 8 & $FF bb = clr & $FF mes rr mes gg mes bb



GENKI

リンク

2007/9/1(Sat) 21:07:22|NO.10849

> 16進数に変換に str r,18:str g,18:str b,18 では動かなかったのですが
> これも古い表記となってしまうのでしょうか?

お手もとの参考にしている資料がHSP2用のもののようですね。

とにかく聞く前にF1キーを押してヘルプブラウザを参照してください。
また、自分で実行してみればエラーメッセージ(この場合ERR41)が出ます。原因はマニュアルを参照してください。

よろしければHSP3マニュアルの「以前のバージョンからの変更点(アップデートガイド)」も参照してみてください。



ONION software Copyright 1997-2023(c) All rights reserved.