合計 昨日 今日

文字の発光

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: にこよん
[URL]
初心者(6,103 ポイント)
Date: 2017年9月07日(木) 23:09
No: 1
(OFFLINE)

 文字の発光

DXライブラリの文字描画関数でこの記事の様な発光文字の様なものを描画したいのですが、
そのような関数を作ることは可能ですか?

あらかじめ画像編集ソフトなどで文字の下に少し大きめのぼかした文字などをセットすれば
そんな感じに見える画像を作ることは可能だそうですが、できれば
コード[C++]: 全て選択
1
DrawFormatStringToHandle();
と同じように使えて、
描画すれば文字の枠が発光するような関数が作りたいです。
visualstudio2017のC++です(win10)
最近は東方風アクションゲームを少しずつ作ってる人です。

Name: Math
[URL]
Date: 2017年9月09日(土) 13:01
No: 2
(OFFLINE)

 Re: 文字の発光

フォント作成部分だから難しいような気がしますね。
http://csi.nisinippon.com/a.html
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<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>

(掲示板にどうやってタグをうめこまれました?)(^^;

Name: usao
[URL]
ハッカー(136,333 ポイント)
Date: 2017年9月09日(土) 13:45
No: 3
(OFFLINE)

 Re: 文字の発光

Offtopic :
そのライブラリでどうやればいいのかは知りませんけど…

(1)十分な大きさの画像バッファを用意して,全画素の値を0で初期化する.
(2)(1)に文字列を画素値1で描画したのち,その画像をぼかす
(3)(2)の上に再度文字列を画素値1で描画する
(4)(3)の画像の各画素の画素値を不透明度として参照する形で,本当に描画したい先に,描画したい色を付ける.

という感じのことをすれば良いのかもしれません.(重そう.)

Name: Glock
[URL]
Date: 2017年9月09日(土) 14:01
No: 4
(OFFLINE)

 Re: 文字の発光

憶測の域は超えていませんが、
コード[C++]: 全て選択
1
SetDrawBlendMode( DX_BLENDMODE_ALPHA, 128 ) ; // 描画モードをアルファブレンドにして透明度を50%にする


のような、文字の透明度を設定出来る関数は存在するようです。

文字の周りを、透明度の高い文字で塗り(文字に近付くほど、透明度を下げる。)、その後、透明度ない文字を真ん中にドーンと描画すれば、上記の様なエフェクトを再現できるのではないかと思いました。

実験していないので憶測ですが、透明度の高い背景となる文字は、かなり透明に近い数値で描画した方がそれっぽく見えるかもしれないと思います。

Name: Dixq (管理人)
(管理人)
[URL]
ウィザード(1,482,610 ポイント)
Date: 2017年9月09日(土) 15:22
No: 5
(OFFLINE)

 Re: 文字の発光

文字自体を光らせるだけならSetDrawBlendModeで出来ますが、輪郭をぼかすことはできません。
もしやるならシャドウバッファではない領域に描画し、自分でピクセル単位でぼかすように画処理する必要があると思います。
ぼかす処理は8方向の画素の平均の値に1ピクセルごとに色を設定するようにして行けば実現可能です。

Name: にこよん
[URL]
初心者(6,103 ポイント)
Date: 2017年9月09日(土) 23:08
No: 6
(OFFLINE)

 Re: 文字の発光

> (掲示板にどうやってタグをうめこまれました?)(^^;

[glo w=white] [/gl ow] ←これのことですか?
私の解釈があっていれば[glo w=white]こうやって書いてます[/gl ow]


> Re:usao様

方法はなんとなくわかったのですが、単語の意味が分からなかったり
そもそもこれだけの説明からコードを書く方法が分かりませんでした。(初心者ですみません)
調べながらやればDXライブラリでもできそうなので後程少し調べてみようと思います。


> Re:Glock様
> 文字の周りを、透明度の高い文字で塗り(文字に近付くほど、透明度を下げる。
徐々に文字サイズを小さくするということでしょうか?
大量の文字ハンドルを用意する必要がある上、座標がフォントの種類によってずれてくるので、
一つの関数にまとめるのは不可能に感じます。


> Dixq (管理人)様
> 文字自体を光らせるだけならSetDrawBlendModeで出来る

いくつかのブレンド方法を試してみたのですが、文字が光ることはありませんでした。
どのようになるのか想像付きませんが、文字が光るならそれで問題ないように感じます。
私の質問のようにはならないということでしょうか?
一応確認してみたいのでブレンドの方法をご教示願います。
後半は全く意味が分からなかったので後程調べながら挑戦してみようと思います。


皆様たくさんのご回答ありがとうございました。
これをヒントにとりあえず頑張ってみます。


追記:
質問文に「発光文字の様なものを描画したい」と書きましたが、
文字や画像などを描画した時にαチャンネルを除いた輪郭から外側にぼかしをつけて描画できる方法や
ブレンド方法が知りたい
というほうが正しいかもしれません。
最近は東方風アクションゲームを少しずつ作ってる人です。

Name: syutomcpe
[URL]
入門者(4,285 ポイント)
Date: 2017年9月11日(月) 10:46
No: 7
(OFFLINE)

 Re: 文字の発光

こちらを参考にしてみてはいかがでしょうか...
http://dxlib.o.oo7.jp/program/dxprogram_Bloom.html

Name: みけCAT
[URL]
伝説なるハッカー(675,355 ポイント)
Date: 2017年9月11日(月) 12:14
No: 8
(OFFLINE)

 Re: 文字の発光

そういえば、昔似たようなことを質問していました。
もしかしたら参考になるかもしれません。
数字が光っているような表現 • C言語交流フォーラム ~ mixC++ ~
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Name: にこよん
[URL]
初心者(6,103 ポイント)
Date: 2017年9月13日(水) 20:57
No: 9
(OFFLINE)

 Re: 文字の発光

む、難しい...
今時間が取れない状況なので試せなくなってしまいました。
しばらく時間がたったのち再度戻ってこようと思います。
最近は東方風アクションゲームを少しずつ作ってる人です。

Name: にこよん
[URL]
初心者(6,103 ポイント)
Date: 2017年9月15日(金) 23:57
No: 10
(OFFLINE)

 Re: 文字の発光

[解決!]

いろいろ教えていただいたのですが、技術がたらず文字を発行する関数を作ることはできませんでした。
すみません。
(もうちょっと簡単にできると思ってました)

とりあえず文字の中心座標から発光っぽい画像を後ろに描画する方法でプログラムしました。
このスレッドは1度解決にしておきます。
また説明していただいたあたりの技術に詳しくなった時に再度見に来ようとと思います。

ありがとうございました。
最近は東方風アクションゲームを少しずつ作ってる人です。


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[18人]