トップページ > 記事閲覧
DrawFormatString...の自由変形について
名前:ゆゆ 日時: 2016/12/04 15:38

DrawFormatStringToHandleの自由変形についてです。 いつもありがとうございます。 DrawFormatStringToHandleには、 DrawExtendFormatStringToHandleや、DrawRotaFormatStringToHandleがあり、 拡大したり回転したりはできますが、 自由変形ができません。 一通り探してみましたが、見つけることができませんでした... DrawFormatStringToHandleをDrawModiGraphFのように、小数で自由変形して表示したいのですが、 どうすればよいのでしょうか...? 四点を指定して、変形させて表示したいです...。
メンテ

Page: 1 |

Re: DrawFormatString...の自由変形について ( No.1 )
名前:管理人 日時:2016/12/05 03:13

文字列の自由変形描画の関数を追加してみましたので、よろしければこちらをダウンロードしてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』をして下さい) 以下の関数を追加しました // フォントハンドルを使用して文字列を変形描画する( 座標指定が float 版 ) int DrawModiStringFToHandle( float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, unsigned int Color, int FontHandle, unsigned int EdgeColor, int VerticalFlag, const TCHAR *String ) ; // フォントハンドルを使用して書式指定文字列を変形描画する( 座標指定が float 版 ) int DrawModiFormatStringFToHandle( float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, unsigned int Color, int FontHandle, unsigned int EdgeColor, int VerticalFlag, const TCHAR *FormatString, ... ) ; ↑の関数以外にも DrawModiString や DrawModiStringToHandle なども追加されています ただ、1文字単位で変形後の座標を計算する仕組みを実装するのはかなりの改造が必要だったので、 短時間で実装するために一度作業用スクリーンに DrawStringToHandle で描画したものを DrawModiGraph で変形描画するということを内部で行っています なので DrawRotaString や DrawExtendString などに比べるとかなり重いです あと、一度作業用スクリーンに描画する関係上 CreateFontToHandle を呼ぶ前に SetFontCacheUsePremulAlphaFlag( TRUE ) ; を実行しておくことで作成することができる 「乗算済みアルファ」用のフォントハンドルを使い、描画時も SetDrawBlendMode( DX_BLENDMODE_PMA_ALPHA, 255 ) ; など ブレンド名内に PMA が付く「乗算済みアルファ」用のブレンドモードで DrawModiFormatString を実行した方が 「乗算済みアルファ」用ではない通常タイプのフォントハンドルを使用した場合よりも高速に描画できます ( 「乗算済みアルファ」についてはこちらに解説がありますので、もしご存知ではありませんでしたらご覧ください m(_ _)m <乗算済みアルファのすすめ> https://dxlib.xsrv.jp/lecture/PremulAlpha/PremulAlpha.html ) 多用しなければ実用の範囲内の速度は出ると思いますので、よろしければ使ってみてください (・・;;
メンテ
Re: DrawFormatString...の自由変形について ( No.2 )
名前:ゆゆ (解決) 日時:2016/12/05 18:22

お忙しい中、文字列変形のたくさんの関数を追加してくださり本当にありがとうございます!! 大変感謝します。 夜試してみます。 うまくいきました!ありがとうございました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存