#3
by 32Ryo » 1年前
あたっしゅさん
返信ありがとうございます。
こちらが件のソースになります。テスト用として新しく作成しましたが、やはりバグらしき挙動をしました。
コード:
#include "DxLib.h"
#define TEST_STR_NUM 2
#define TEST_MAX_WIDTH 300
#define TEST_STR_SIZE 32
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1)return 0;
SetDrawScreen(DX_SCREEN_BACK);
int fontHandle = 0;
fontHandle = CreateFontToHandle("Meiryo UI", TEST_STR_SIZE, 1, DX_FONTTYPE_ANTIALIASING); //フォントは適当
const char* testStr = "アイウ 漢字 XYZ setting gpyq";
int strWidth = 0;
strWidth = GetDrawStringWidthToHandle(testStr, -1, fontHandle); //負の値を渡して文字全体の長さを取得
while (ProcessMessage() == 0) {
ClearDrawScreen();
if (TEST_MAX_WIDTH < strWidth) {
//幅が定数より大きい場合圧縮して描画
//引数の座標は左上、右上、右下、左下の順
DrawModiStringToHandle(0, 0, TEST_MAX_WIDTH, 0, TEST_MAX_WIDTH, TEST_STR_SIZE, 0, TEST_STR_SIZE, GetColor(255, 255, 255), fontHandle, GetColor(128, 128, 128), 0, testStr);
}
else {
//定数以下の場合は普通に描画
DrawStringToHandle(0, 0, testStr, GetColor(255, 255, 255), fontHandle);
}
ScreenFlip();
}
DxLib_End(); //終了
return 0;
}
あたっしゅさん
返信ありがとうございます。
こちらが件のソースになります。テスト用として新しく作成しましたが、やはりバグらしき挙動をしました。
[code]
#include "DxLib.h"
#define TEST_STR_NUM 2
#define TEST_MAX_WIDTH 300
#define TEST_STR_SIZE 32
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1)return 0;
SetDrawScreen(DX_SCREEN_BACK);
int fontHandle = 0;
fontHandle = CreateFontToHandle("Meiryo UI", TEST_STR_SIZE, 1, DX_FONTTYPE_ANTIALIASING); //フォントは適当
const char* testStr = "アイウ 漢字 XYZ setting gpyq";
int strWidth = 0;
strWidth = GetDrawStringWidthToHandle(testStr, -1, fontHandle); //負の値を渡して文字全体の長さを取得
while (ProcessMessage() == 0) {
ClearDrawScreen();
if (TEST_MAX_WIDTH < strWidth) {
//幅が定数より大きい場合圧縮して描画
//引数の座標は左上、右上、右下、左下の順
DrawModiStringToHandle(0, 0, TEST_MAX_WIDTH, 0, TEST_MAX_WIDTH, TEST_STR_SIZE, 0, TEST_STR_SIZE, GetColor(255, 255, 255), fontHandle, GetColor(128, 128, 128), 0, testStr);
}
else {
//定数以下の場合は普通に描画
DrawStringToHandle(0, 0, testStr, GetColor(255, 255, 255), fontHandle);
}
ScreenFlip();
}
DxLib_End(); //終了
return 0;
}
[/code]