トップページ > 過去ログ > 記事閲覧
文字の縁について
名前:L-EO 日時: 2013/01/09 11:03

はじめまして、L-EO(レオ)といいます。 今回、文字色を黒、文字の縁(エッジ)を白として、黒い画面からフェードイン・フェードアウトさせようと思いプログラムしたところ、一部動作がおかしいところがあります。 SetDrawBlendMode関数にてアルファ値を調整し、だんだん透明にしてフェードイン・アウトを行おうとしていますが、透明度が128ごろになるとエッジだけでなく、文字自体まで半透明な白になってしまいます。 自分の理想としては、エッジのみをフェードさせたいのですが…。 これはバグなのでしょうか?それとも仕様でしょうか?? もし仕様であれば、エッジのみを縁取りした画像をフェードさせようとも考えていますが、できるだけ画像は使わずにやってみたいと思っています。 自分の書いたコードを一部載せておきます。 int x = 0; int font = CreateFontToHandle("MS ゴシック", 16, 6, DX_FONTTYPE_EDGE); int flag = 0; ChangeFontType(DX_FONTTYPE_EDGE); while((ScreenFlip() == 0) && (ProcessMessage() == 0) && (ClearDrawScreen() == 0)){ //ここに計算処理を書く if (flag == 0){ x++; if (x >= 255) flag = 1; } else if (flag == 1){ x--; if (x <= 0) flag = 0; } //ここに描画処理を書く SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0); DrawFormatString(0, 0, GetColor(255, 0, 0), "透明度=%d", x); DrawString(0, 48, "TEST", GetColor(0, 0, 0), GetColor(255, 255, 255)); DrawStringToHandle(0, 64, "TEST", GetColor(0, 0, 0), font, GetColor(255, 255, 255)); SetDrawBlendMode(DX_BLENDMODE_ALPHA, 128); DrawString(0, 96, "TEST", GetColor(0, 0, 0), GetColor(255, 255, 255)); DrawStringToHandle(0, 112, "TEST", GetColor(0, 0, 0), font, GetColor(255, 255, 255)); SetDrawBlendMode(DX_BLENDMODE_ALPHA, x); DrawString(0, 144, "TEST", GetColor(0, 0, 0), GetColor(255, 255, 255)); DrawStringToHandle(0, 160, "TEST", GetColor(0, 0, 0), font, GetColor(255, 255, 255)); }

Page: 1 |

Re: 文字の縁について ( No.1 )
名前:管理人 日時:2013/01/10 01:25

現在の仕様では縁付きフォントは先に縁の画像( 本体部分より1ドット分幅の大きい文字画像 )を 描画した後、本体文字画像を上から描画するという方式になっているのが原因です 思えば半透明描画したときのことを考慮していませんでした 良い方法が無いか考えてみますので、少しお時間を下さい
Re: 文字の縁について ( No.2 )
名前:L-EO 日時:2013/01/10 07:14

わかりました。 今のところは縁取りした画像を使って代用しますが、 もしも良い方法があればまたお知らせください。 よろしくお願いします。
Re: 文字の縁について ( No.3 )
名前:管理人 日時:2013/01/12 22:30

現在の使用のされ方で L-EOさんの意図通りの結果が出るように改良する予定です
Re: 文字の縁について ( No.4 )
名前:管理人 日時:2013/01/13 22:39

最初に載せて頂いたプログラムのままでL-EOさんの意図した通りの描画結果が得られるように 改良してみましたので、よろしければお試しになってみてください m(_ _)m ( 因みに縁の処理を少し変更したので、縁の見た目が変化しています ) http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
Re: 文字の縁について ( No.5 )
名前:L-EO(解決) 日時:2013/01/15 08:14

ありがとうございます。 正しく動作することを確認いたしました。 また何かあればよろしくおねがいします。

Page: 1 |