DXライブラリでテキストを中央寄せする方法
DXライブラリでテキストを中央寄せするには、テキストの幅を取得し、それを基に描画位置を調整します。
まず、GetDrawStringWidth関数
を使って描画するテキストの幅を取得し、画面の中央位置からその幅の半分を引いた位置にテキストを描画します。
例えば、画面の幅がscreenWidth
で、テキストの幅がtextWidth
の場合、描画位置は\(\frac{{screenWidth – textWidth}}{2}\)となります。
実際にテキストを中央寄せする手順
画面の中央座標を計算する
テキストを中央に配置するためには、まず画面の中央座標を計算する必要があります。
ウィンドウの幅と高さを取得し、それを基に中央の座標を求めます。
中央座標は次のように計算できます。
\[\text{中央X} = \frac{\text{ウィンドウ幅}}{2}\]
\[\text{中央Y} = \frac{\text{ウィンドウ高さ}}{2}\]
テキストの幅を取得する
次に、描画するテキストの幅を取得します。
DXライブラリでは、GetDrawStringWidth関数
を使用して、指定したテキストの幅を取得できます。
この幅を使って、テキストを中央に配置するための位置を調整します。
テキストの描画位置を調整する
テキストを中央に配置するためには、テキストの幅を考慮して描画位置を調整します。
具体的には、中央座標からテキストの幅の半分を引いた位置にテキストを描画します。
これにより、テキストが画面の中央に表示されます。
中央寄せのテキストを描画するコード例
以下は、DXライブラリを使用してテキストを中央寄せするサンプルコードです。
#include <DxLib.h> // DXライブラリのヘッダファイルをインクルード
int main() {
ChangeWindowMode(TRUE); // ウィンドウモードに変更
int screenWidth = 800; // 画面の幅
int screenHeight = 600; // 画面の高さ
SetGraphMode(screenWidth, screenHeight, 32); // 画面サイズを設定
if (DxLib_Init() == -1) return -1; // DXライブラリの初期化
// 画面の中央座標を計算
int centerX = screenWidth / 2; // 中央X座標
int centerY = screenHeight / 2; // 中央Y座標
const char* text = "中央寄せのテキスト"; // 描画するテキスト
int textWidth = GetDrawStringWidth(text,strlen(text)); // テキストの幅を取得
// テキストの描画位置を調整
int drawX = centerX - (textWidth / 2); // 描画X座標
int drawY = centerY; // 描画Y座標
// メインループ
while (ProcessMessage() == 0) {
ClearDrawScreen(); // 画面をクリア
DrawString(drawX, drawY, text, GetColor(255, 255, 255)); // テキストを描画
ScreenFlip(); // バッファを入れ替え
}
DxLib_End(); // DXライブラリの終了
return 0; // プログラムの終了
}

このコードを実行すると、ウィンドウの中央に「中央寄せのテキスト」という文字が表示されます。
テキストの幅を計算し、中央に配置することで、見た目が整った表示が実現できます。
応用例:複数行のテキストを中央寄せする
複数行のテキストの描画方法
複数行のテキストを中央寄せするためには、各行を個別に描画する必要があります。
DXライブラリでは、DrawString関数
を使用して、指定した位置にテキストを描画できます。
複数行のテキストを描画する際は、行ごとにY座標を調整して描画します。
各行の幅を取得して中央寄せする方法
各行のテキスト幅を取得するためには、GetDrawStringWidth関数
を使用します。
各行の幅を計算し、中央に配置するためのX座標を調整します。
具体的には、中央座標から各行の幅の半分を引いた位置に描画します。
これにより、すべての行が中央に揃います。
複数行のテキストを中央寄せするコード例
以下は、DXライブラリを使用して複数行のテキストを中央寄せするサンプルコードです。
#include <DxLib.h> // DXライブラリのヘッダファイルをインクルード
int main() {
ChangeWindowMode(TRUE); // ウィンドウモードに変更
int screenWidth = 800; // 画面の幅
int screenHeight = 600; // 画面の高さ
SetGraphMode(screenWidth, screenHeight, 32); // 画面モードの設定
if (DxLib_Init() == -1) return -1; // DXライブラリの初期化
// 画面の中央座標を計算
int centerX = screenWidth / 2; // 中央X座標
// 複数行のテキスト
const char* lines[] = {
"中央寄せのテキスト",
"これは複数行の",
"テキストの例です。"
};
int lineCount = sizeof(lines) / sizeof(lines[0]); // 行数を取得
// メインループ
while (ProcessMessage() == 0) {
ClearDrawScreen(); // 画面をクリア
// 各行を描画
for (int i = 0; i < lineCount; i++) {
int textWidth = GetDrawStringWidth(lines[i],strlen(lines[i])); // 各行の幅を取得
int drawX = centerX - (textWidth / 2); // 描画X座標
int drawY = (screenHeight / 2) + (i * 30); // 描画Y座標(行間隔を30に設定)
DrawString(drawX, drawY, lines[i], GetColor(255, 255, 255)); // テキストを描画
}
ScreenFlip(); // バッファを入れ替え
}
DxLib_End(); // DXライブラリの終了
return 0; // プログラムの終了
}

このコードを実行すると、ウィンドウの中央に複数行のテキストが表示されます。
各行の幅を計算し、中央に配置することで、見た目が整った表示が実現できます。
行間隔を調整することで、テキストの可読性も向上します。
応用例:ウィンドウサイズに応じた中央寄せ
ウィンドウサイズの変更に対応する方法
ウィンドウサイズが変更された場合、テキストの中央寄せ位置も再計算する必要があります。
DXライブラリでは、ウィンドウサイズの変更を検知するために、ProcessMessage関数
を使用してメッセージを処理します。
ウィンドウサイズが変更された際には、再描画を行うためのフラグを設定します。
ウィンドウサイズに応じたテキストの再描画
ウィンドウサイズが変更された場合、テキストの描画位置を再計算し、再描画を行います。
具体的には、ウィンドウの幅と高さを取得し、中央座標を再計算します。
これにより、ウィンドウサイズに応じたテキストの位置を常に中央に保つことができます。
ウィンドウサイズ変更時の中央寄せの自動調整
以下は、ウィンドウサイズの変更に応じてテキストを中央寄せするサンプルコードです。
ウィンドウサイズが変更されるたびに、テキストの位置を自動的に調整します。
#include <DxLib.h> // DXライブラリのヘッダファイルをインクルード
int main() {
ChangeWindowMode(TRUE); // ウィンドウモードに変更
int screenWidth = 800; // 画面の幅
int screenHeight = 600; // 画面の高さ
SetGraphMode(screenWidth, screenHeight, 32); // 画面モードの設定
if (DxLib_Init() == -1) return -1; // DXライブラリの初期化
const char* text = "ウィンドウサイズに応じた中央寄せ"; // 描画するテキスト
// メインループ
while (ProcessMessage() == 0) {
ClearDrawScreen(); // 画面をクリア
// ウィンドウサイズを取得
// 中央座標を計算
int centerX = screenWidth / 2; // 中央X座標
int centerY = screenHeight / 2; // 中央Y座標
// テキストの幅を取得
int textWidth = GetDrawStringWidth(text); // テキストの幅を取得
// 描画位置を調整
int drawX = centerX - (textWidth / 2); // 描画X座標
int drawY = centerY; // 描画Y座標
// テキストを描画
DrawString(drawX, drawY, text, GetColor(255, 255, 255)); // テキストを描画
ScreenFlip(); // バッファを入れ替え
}
DxLib_End(); // DXライブラリの終了
return 0; // プログラムの終了
}

このコードを実行すると、ウィンドウサイズを変更しても、テキストが常に中央に表示されます。
ウィンドウサイズの変更に応じて、テキストの位置を自動的に調整することで、ユーザーにとって快適な表示を提供できます。
これにより、さまざまな解像度やウィンドウサイズに対応したアプリケーションを作成することが可能です。
応用例:画像とテキストを組み合わせた中央寄せ
画像の描画とテキストの描画を組み合わせる方法
画像とテキストを組み合わせて中央寄せするためには、まず画像を描画し、その後にテキストを描画します。
DXライブラリでは、LoadGraph関数
を使用して画像を読み込み、DrawGraph関数
を使用して描画します。
テキストの描画位置は、画像の中央に配置するために、画像の幅と高さを考慮して調整します。
画像の中央にテキストを配置する方法
画像の中央にテキストを配置するためには、画像の中央座標を計算し、テキストの幅を取得して描画位置を調整します。
具体的には、画像の中央座標からテキストの幅の半分を引いた位置にテキストを描画します。
これにより、画像の中央にテキストが表示されます。
画像とテキストを組み合わせた中央寄せのコード例
以下は、DXライブラリを使用して画像とテキストを組み合わせて中央寄せするサンプルコードです。
#include <DxLib.h> // DXライブラリのヘッダファイルをインクルード
int main() {
ChangeWindowMode(TRUE); // ウィンドウモードに変更
int screenWidth = 800; // 画面の幅
int screenHeight = 600; // 画面の高さ
SetGraphMode(screenWidth, screenHeight, 32); // 画面モードの設定
if (DxLib_Init() == -1) return -1; // DXライブラリの初期化
// 画像を読み込む
int imageHandle = LoadGraph("image.png"); // 画像ファイルを読み込む
if (imageHandle == -1) return -1; // 画像の読み込みに失敗した場合
const char* text = "中央寄せのテキスト"; // 描画するテキスト
// メインループ
while (ProcessMessage() == 0) {
ClearDrawScreen(); // 画面をクリア
// 画像のサイズを取得
int imageWidth, imageHeight;
GetGraphSize(imageHandle, &imageWidth, &imageHeight); // 画像の幅と高さを取得
// 画像の中央座標を計算
int imageCenterX = screenWidth / 2; // 画像の中央X座標
int imageCenterY = screenHeight / 2; // 画像の中央Y座標
// 画像を描画
DrawGraph(imageCenterX - (imageWidth / 2), imageCenterY - (imageHeight / 2), imageHandle, TRUE); // 画像を中央に描画
// テキストの幅を取得
int textWidth = GetDrawStringWidth(text, strlen(text)); // テキストの幅を取得
// テキストの描画位置を調整
int drawX = imageCenterX - (textWidth / 2); // テキストの描画X座標
int drawY = imageCenterY; // テキストの描画Y座標
// テキストを描画
DrawString(drawX, drawY, text, GetColor(255, 255, 255)); // テキストを描画
ScreenFlip(); // バッファを入れ替え
}
DxLib_End(); // DXライブラリの終了
return 0; // プログラムの終了
}
このコードを実行すると、指定した画像の中央に「中央寄せのテキスト」という文字が表示されます。
画像とテキストを組み合わせることで、視覚的に魅力的な表示を実現できます。
画像のサイズやテキストの内容に応じて、中央寄せの位置を自動的に調整することで、さまざまなデザインに対応可能です。
まとめ
この記事では、DXライブラリを使用してテキストを中央寄せする方法や、複数行のテキスト、ウィンドウサイズに応じた中央寄せ、画像とテキストを組み合わせた中央寄せの実装方法について詳しく解説しました。
これにより、さまざまな状況においてテキストを美しく配置する技術を身につけることができます。
ぜひ、実際にコードを試してみて、あなたのプロジェクトに役立ててください。