アプリ版:「スタンプのみでお礼する」機能のリリースについて

C#で開発をしています。

指定した高さに最も近い高さをもつフォントサイズを取得したいのですが現在

int fontsize = 1;
float height = 90;
Font myFont = new Font("MS UI Gothic", fontsize );


//高さ90に近いフォントサイズを取得
while(myFont.GetHeight(e.Graphics) < height)
{
myFont = new Font("MS UI Gothic", fontsize );
fontsize += 0.001f;
}

とつくり的にはこんな感じでとれることはとれたのですが
もっとスマートな方法、簡単な方法はないのでしょうか?
よろしくお願いします。

A 回答 (1件)

指定した高さ (単位:Pixel) のフォントが使いたいわけではなく,


指定した行間 (単位:Pixel) のフォントが使いたいのですね。

前者であれば,コンストラクタで GraphicsUnit.Pixel を指定するだけの話なのですが,
後者の場合,FontFamily オブジェクトを作り,GetLineSpacing メソッドと GetEmHeight メソッドから計算して Font を生成することになります。

var style = FontStyle.Regular;
var requestHeight = 90.0f;
var fontFamily = new FontFamily("MS UI Gothic");
var fontSize = requestHeight * fontFamily.GetEmHeight(style) / fontFamily.GetLineSpacing(style);
var font = new Font(fontFamily, fontSize, GraphicsUnit.Pixel);

References)
MSDN: Font コンストラクター (String, Single, GraphicsUnit)
http://msdn.microsoft.com/ja-jp/library/fza59xh0 …
MSDN: GraphicsUnit 列挙体
http://msdn.microsoft.com/ja-jp/library/system.d …
MSDN: GetLineSpacing メソッド
http://msdn.microsoft.com/ja-jp/library/system.d …
MSDN: GetEmHeight メソッド
http://msdn.microsoft.com/ja-jp/library/system.d …
    • good
    • 0
この回答へのお礼

なるほど・・
ありがとうございました。

お礼日時:2011/11/17 08:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!