Re: DrawExtendStringが絡む文字列の描画について ( No.1 ) |
- 名前:管理人 日時:2020/05/31 21:16
> 文字列を描画する時にExRateYを1.0にしてExRateXの値が1.0未満になると、指定した座標より若干下にずれて描画されます。
私が以下のようなプログラム( ExRateX が 1.0 の場合の文字と、ExRateX が 0.5 の場合の文字を重ねて、
Y座標がずれるか確認する )で確認した限りでは ExRateX の値が 1.0 未満になっても指定した座標より
下にずれて描画されるという事はありませんでした
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
SetFontSize( 64 ) ;
// メインループ
while( ProcessMessage() == 0 )
{
// 画面のクリア
ClearDrawScreen() ;
DrawExtendString( 0, 0, 1.0, 1.0, "あ", GetColor( 255,255, 255 ) ) ;
DrawExtendString( 12, 0, 0.5, 1.0, "あ", GetColor( 0,255,0 ) ) ;
DrawExtendString( 64, 0, 1.0, 1.0, "B", GetColor( 255,255, 255 ) ) ;
DrawExtendString( 72, 0, 0.5, 1.0, "B", GetColor( 0,255,0 ) ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
よろしければ was-blue.0793さんの環境でも↑のプログラムではずれずに描画されるか試してみていただけないでしょうか? m(_ _)m
|
Re: DrawExtendStringが絡む文字列の描画について ( No.2 ) |
- 名前:was-blue.0793 日時:2020/06/26 20:41
>>管理人さん
当該問題は当方が独自に作成していた文字の座標基準を設定する処理が原因で下にズレているように見えたことが原因でした。
しかし、ExRateYが1.0に設定されているにも関わらずExRateXの値次第で縦の長さが変わってしまうと意図した描画ができないケースが多いです。
ExRateXの値に関係なくExRateYが1.0であれば通常の描画同様の高さになるようにすることは可能でしょうか?
|
Re: DrawExtendStringが絡む文字列の描画について ( No.3 ) |
- 名前:管理人 日時:2020/06/28 01:04
No.1 でも申し上げましたが、簡単に試した限りでは、私の環境では
ExRateXの値に関係なくExRateYが1.0であれば通常の描画同様の高さになります
よろしければ
『ExRateYが1.0に設定されているにも関わらずExRateXの値次第で縦の長さが変わってしまう』
という結果が確認できるサンプルプログラムをこちらの掲示板に貼り付けていただけないでしょうか? m(_ _;m
|
Re: DrawExtendStringが絡む文字列の描画について ( No.4 ) |
- 名前:was-blue.0793 日時:2020/07/01 22:47
>>管理人さん
簡略化していますが、以下のプログラムで『ExRateYが1.0に設定されているにも関わらずExRateXの値次第で縦の長さが変わってしまう』ことが示されると思われます。
このプログラムは、文字列の縦横の長さにかかわらず文字列を画面中央に描画したいものです。
(CSSの「text-align:center; vertical-align:middle;」を簡易的に再現するようなイメージです)
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
const char* str = "The quick brown fox jumps over the lazy dog"
int x = 320
int y = 240
double xsh = 0.5;
int xc1, yc1;
int xc2, yc2;
GetDrawExtendStringSize(&xc1, &yc1, nullptr, 1.0, 1.0, str, strlen(str));
GetDrawExtendStringSize(&xc2, &yc2, nullptr, xsh, 1.0, str, strlen(str));
SetFontSize(32);
// メインループ
while( ProcessMessage() == 0 )
{
// 画面のクリア
ClearDrawScreen() ;
DrawExtendString(x - xc1, y - yc1, 1.0, 1.0, str, GetColor(255, 0, 0));
DrawExtendString(x - xc2, y - yc2, xsh, 1.0, str, GetColor(0, 0, 255));
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
|
Re: DrawExtendStringが絡む文字列の描画について ( No.5 ) |
- 名前:管理人 日時:2020/07/02 00:38
|
Re: DrawExtendStringが絡む文字列の描画について ( No.6 ) |
- 名前:was-blue.0793(解決) 日時:2020/08/05 17:59
>>管理人さん
お返事が遅れて申し訳ございません。
当該問題が修正されていることを確認しました。
ご対応ありがとうございます。
(なお、先の再現コードは中央揃えの場合本来GetDrawExtendStringSizeで得た値を半分にしなければならないところその処理がなかったため、
CSSでいうと「text-align:right; vertical-align:text-bottom;」のような描画となってしまいますが、右揃え・下揃えでも同様の現象は発生するものでした)
|
|