文字の発光

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
にこよん
記事: 113
登録日時: 7年前
住所: 大阪府
連絡を取る:

文字の発光

#1

投稿記事 by にこよん » 6年前

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

あらかじめ画像編集ソフトなどで文字の下に少し大きめのぼかした文字などをセットすれば
そんな感じに見える画像を作ることは可能だそうですが、できれば

コード:

DrawFormatStringToHandle();
と同じように使えて、
描画すれば文字の枠が発光するような関数が作りたいです。
visualstudio2017のC++です(win10)[/glow]
最近は東方風アクションゲームを少しずつ作ってる人です
東方翠風燐FreeDownload⇒http://dxlib.o.oo7.jp/cgi/patio/read.cgi?no=212

Math

Re: 文字の発光

#2

投稿記事 by Math » 6年前

フォント作成部分だから難しいような気がしますね。
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>
(掲示板にどうやってタグをうめこまれました?)(^^;

アバター
usao
記事: 1887
登録日時: 11年前

Re: 文字の発光

#3

投稿記事 by usao » 6年前

オフトピック
そのライブラリでどうやればいいのかは知りませんけど…

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

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

Glock

Re: 文字の発光

#4

投稿記事 by Glock » 6年前

憶測の域は超えていませんが、

コード:

SetDrawBlendMode( DX_BLENDMODE_ALPHA, 128 ) ; // 描画モードをアルファブレンドにして透明度を50%にする
のような、文字の透明度を設定出来る関数は存在するようです。

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

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

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: 文字の発光

#5

投稿記事 by Dixq (管理人) » 6年前

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

アバター
にこよん
記事: 113
登録日時: 7年前
住所: 大阪府
連絡を取る:

Re: 文字の発光

#6

投稿記事 by にこよん » 6年前

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

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


> Re:usao様

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


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


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

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


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


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

Choucreampuff
記事: 12
登録日時: 7年前

Re: 文字の発光

#7

投稿記事 by Choucreampuff » 6年前

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

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 文字の発光

#8

投稿記事 by みけCAT » 6年前

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

アバター
にこよん
記事: 113
登録日時: 7年前
住所: 大阪府
連絡を取る:

Re: 文字の発光

#9

投稿記事 by にこよん » 6年前

む、難しい...
今時間が取れない状況なので試せなくなってしまいました。
しばらく時間がたったのち再度戻ってこようと思います。
最近は東方風アクションゲームを少しずつ作ってる人です
東方翠風燐FreeDownload⇒http://dxlib.o.oo7.jp/cgi/patio/read.cgi?no=212

アバター
にこよん
記事: 113
登録日時: 7年前
住所: 大阪府
連絡を取る:

Re: 文字の発光

#10

投稿記事 by にこよん » 6年前

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

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

ありがとうございました。
最近は東方風アクションゲームを少しずつ作ってる人です
東方翠風燐FreeDownload⇒http://dxlib.o.oo7.jp/cgi/patio/read.cgi?no=212

返信

“C言語何でも質問掲示板” へ戻る