トップページ > 記事閲覧
文字サイズの変更について
名前:Nさん 日時: 2021/04/25 03:30

いつも使わせてもらっています。 CreateFontToHandleで文字フォントを作成しているのですが、この文字の大きさを動的に変えたいとなると 大量にCreateFontToHandleを行って予め用意しておかないといけない感じなのでしょうか?処理的にもあまりよろしくないのでもし便利な関数があれば教えていただきたいです
メンテ

Page: 1 |

Re: 文字サイズの変更について ( No.1 )
名前:無名 日時:2021/04/25 04:39

リファレンスには載っていないのですが、DrawExtendStringToHandle関数やDrawExtendFormatStringToHandle関数で文字の大きさを変えて描画できます。 一番大きく描画するサイズでフォントハンドルを作成しておいて、描画モードをバイリニア法に設定して縮小描画するのが見た目が綺麗だと思います。 (大きくなった時に多少ボケてもいいなら普通サイズで作って拡大するのもありです) ↓関数の詳細 フォントハンドルを使用して文字列を拡大描画する int DrawExtendStringToHandle( int x, int y, double ExRateX, double ExRateY, const TCHAR *String, int Color, int FontHandle, int EdgeColor = 0 , int VerticalFlag = FALSE ) ;// フォントハンドルを使用して書式指定文字列を拡大描画する int DrawExtendFormatStringToHandle( int x, int y, double ExRateX, double ExRateY, int Color, int FontHandle, const TCHAR *FormatString, ... ) ;// ↓サンプル #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); SetGraphMode(640, 480, 32); if (DxLib_Init() == -1)return -1; double Scale = 0.2; bool Reflag = false; //フォントを大きめに作成 int FontH = CreateFontToHandle("MS ゴシック", 100, 4 , DX_FONTTYPE_ANTIALIASING_4X4); SetDrawScreen(DX_SCREEN_BACK); //バイリニア法で描画する SetDrawMode(DX_DRAWMODE_BILINEAR); //メインループ while (!ProcessMessage()) { //スケールリピート if (Reflag) { Scale -= 0.01; if (Scale < 0.2)Reflag = false; } else { Scale += 0.01; if (Scale > 2.0)Reflag = true; } //描画 ClearDrawScreen(); DrawExtendStringToHandle(16,16, Scale, Scale,"文字を動的に拡大縮小する",0xffffff, FontH); ScreenFlip(); } DxLib_End(); return 0; }
メンテ

Page: 1 |

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

   クッキー保存