ページ 1 / 1
文字の発光
Posted: 2017年9月07日(木) 23:09
by にこよん
DXライブラリの文字描画関数でこの記事の様な発光文字の様なものを描画したいのですが、
そのような関数を作ることは可能ですか?
あらかじめ画像編集ソフトなどで文字の下に少し大きめのぼかした文字などをセットすれば
そんな感じに見える画像を作ることは可能だそうですが、できればコード:
DrawFormatStringToHandle();
と同じように使えて、
描画すれば文字の枠が発光するような関数が作りたいです。
visualstudio2017のC++です(win10)[/glow]
Re: 文字の発光
Posted: 2017年9月09日(土) 13:01
by Math
フォント作成部分だから難しいような気がしますね。
http://csi.nisinippon.com/a.html
コード:
<div style="color: #fff;text-shadow: 0 0 10px #fff,0 0 15px #fff;background: #111;padding: 10px;font-size: 16px;">
>DXライブラリの文字描画関数でこの記事の様な発光文字の様なものを描画したいのですが、<br/>
>そのような関数を作ることは可能ですか?
</div>
<div style="color: red;text-shadow: 0 0 10px #fff,0 0 20px #fff;background: #6f0101;padding: 10px;font-size: 30px;">
"DXライブラリ置き場掲示板"に相談されてはどうでしょうか。
</div>
<div style="color: #fff;text-shadow: 0 0 10px #fff,0 0 15px #fff;background: #111;padding: 10px;font-size: 20px;">
>あらかじめ画像編集ソフトなどで文字の下に少し大きめのぼかした文字などをセットすれば<br/>
>そんな感じに見える画像を作ることは可能だそうですが
</div>
<div style="color: blue;text-shadow: 0 0 10px #fff,0 0 15px #fff;background: #022b45;padding: 10px;font-size: 30px;">
そのようにされたらと思いますね
</div>
(掲示板にどうやってタグをうめこまれました?)(^^;
Re: 文字の発光
Posted: 2017年9月09日(土) 13:45
by usao
オフトピック
そのライブラリでどうやればいいのかは知りませんけど…
(1)十分な大きさの画像バッファを用意して,全画素の値を0で初期化する.
(2)(1)に文字列を画素値1で描画したのち,その画像をぼかす
(3)(2)の上に再度文字列を画素値1で描画する
(4)(3)の画像の各画素の画素値を不透明度として参照する形で,本当に描画したい先に,描画したい色を付ける.
という感じのことをすれば良いのかもしれません.(重そう.)
Re: 文字の発光
Posted: 2017年9月09日(土) 14:01
by Glock
憶測の域は超えていませんが、
コード:
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 128 ) ; // 描画モードをアルファブレンドにして透明度を50%にする
のような、文字の透明度を設定出来る関数は存在するようです。
文字の周りを、透明度の高い文字で塗り(文字に近付くほど、透明度を下げる。)、その後、透明度ない文字を真ん中にドーンと描画すれば、上記の様なエフェクトを再現できるのではないかと思いました。
実験していないので憶測ですが、透明度の高い背景となる文字は、かなり透明に近い数値で描画した方がそれっぽく見えるかもしれないと思います。
Re: 文字の発光
Posted: 2017年9月09日(土) 15:22
by Dixq (管理人)
文字自体を光らせるだけならSetDrawBlendModeで出来ますが、輪郭をぼかすことはできません。
もしやるならシャドウバッファではない領域に描画し、自分でピクセル単位でぼかすように画処理する必要があると思います。
ぼかす処理は8方向の画素の平均の値に1ピクセルごとに色を設定するようにして行けば実現可能です。
Re: 文字の発光
Posted: 2017年9月09日(土) 23:08
by にこよん
> (掲示板にどうやってタグをうめこまれました?)(^^;
[glo w=white] [/gl ow] ←これのことですか?
私の解釈があっていれば[glo w=white]こうやって書いてます[/gl ow]
> Re:usao様
方法はなんとなくわかったのですが、単語の意味が分からなかったり
そもそもこれだけの説明からコードを書く方法が分かりませんでした。(初心者ですみません)
調べながらやればDXライブラリでもできそうなので後程少し調べてみようと思います。
> Re:Glock様
> 文字の周りを、透明度の高い文字で塗り(文字に近付くほど、透明度を下げる。
徐々に文字サイズを小さくするということでしょうか?
大量の文字ハンドルを用意する必要がある上、座標がフォントの種類によってずれてくるので、
一つの関数にまとめるのは不可能に感じます。
> Dixq (管理人)様
> 文字自体を光らせるだけならSetDrawBlendModeで出来る
いくつかのブレンド方法を試してみたのですが、文字が光ることはありませんでした。
どのようになるのか想像付きませんが、文字が光るならそれで問題ないように感じます。
私の質問のようにはならないということでしょうか?
一応確認してみたいのでブレンドの方法をご教示願います。
後半は全く意味が分からなかったので後程調べながら挑戦してみようと思います。
皆様たくさんのご回答ありがとうございました。
これをヒントにとりあえず頑張ってみます。
追記:
質問文に「発光文字の様なものを描画したい」と書きましたが、
文字や画像などを描画した時にαチャンネルを除いた輪郭から外側にぼかしをつけて描画できる方法や
ブレンド方法が知りたいというほうが正しいかもしれません。
Re: 文字の発光
Posted: 2017年9月11日(月) 10:46
by Choucreampuff
Re: 文字の発光
Posted: 2017年9月11日(月) 12:14
by みけCAT
そういえば、昔似たようなことを質問していました。
もしかしたら参考になるかもしれません。
数字が光っているような表現 • C言語交流フォーラム ~ mixC++ ~
Re: 文字の発光
Posted: 2017年9月13日(水) 20:57
by にこよん
む、難しい...
今時間が取れない状況なので試せなくなってしまいました。
しばらく時間がたったのち再度戻ってこようと思います。
Re: 文字の発光
Posted: 2017年9月15日(金) 23:57
by にこよん
いろいろ教えていただいたのですが、技術がたらず文字を発行する関数を作ることはできませんでした。
すみません。
(もうちょっと簡単にできると思ってました)
とりあえず文字の中心座標から発光っぽい画像を後ろに描画する方法でプログラムしました。
このスレッドは1度解決にしておきます。
また説明していただいたあたりの技術に詳しくなった時に再度見に来ようとと思います。
ありがとうございました。