3

Java バックエンドからテキストの x 座標と y 座標を取得します。ここで、Java とまったく同じ方法で C# (Graphics.DrawString) でそのフォントを描画したいと考えています。そのためには、ベースラインを計算する必要があります。一部のフォントでは適切に表示されるコードがありますが、他のフォントでは正しくレンダリングされません。

SizeF size = graphics.MeasureString(str, font);                                  
int descent = font.FontFamily.GetCellDescent(font.Style);
float factor = font.Size / font.FontFamily.GetEmHeight(font.Style);
float leadingCalc =  (ascent * factor + descent * factor) - emHeight * factor;
graphics.DrawString(str + "", font, brush, x, y - font.Height + descent * factor + leadingCalc);   

問題は、ベースラインを計算するためのより正確な方法またはより良い方法を知っている人はいますか?

4

0 に答える 0