0

さて、右下隅に基づいてスプライトフォントの位置を設定しようとしていますが、設定するとかなりずれてしまい、10,10に設定します。 40,40右下隅が見えるようになりました...正しく実行していると思います...コードは次のとおりです。

public void DrawFont(SpriteBatch spriteBatch)
    {
        spriteBatch.DrawString(gameFont, fontText, fontPos, fontColor);
    }

fontPosは左上隅です。そして、これは独自のクラスです。次に、(同じクラスに)別のメソッドがあります。

public void setBottomRight(Vector2 newVector2)
    {
        fontPos.X = newVector2.X - gameFont.MeasureString(fontText).X;
        fontPos.Y = newVector2.Y - gameFont.MeasureString(fontText).Y;
    }

そして、これをGame.csクラスの更新メソッドで使用し、ベクトルを10,10の新しいベクトルに設定しましたが、テキストを表示できません。テキストのギャップにすぎないかどうかを確認しました。そうではありませんでした。

これは正しいと思います...それとも私はばかげた間違いをしましたか...?または、MeaureStringメソッドは端から端までの長さを提供しませんか?

ありがとう!

4

1 に答える 1

1

あなたの元の論理はほとんど健全です。正しくないのは、MeasurestringY値だけです。メジャー文字列のY値は、文字列の垂直方向のサイズの2倍を返します。したがって、文字列としてサイズ14がある場合は、28が返されます。つまり、高さを指定する代わりに、画面の文字列をスローする量の2倍になります。交換

fontPos.Y = newVector2.Y - gameFont.MeasureString(fontText).Y;

fontPos.Y = newVector2.Y - gameFont.MeasureString(fontText).Y/2;

あなたの問題を解決します!

于 2012-10-20T15:20:30.520 に答える