public void DrawText(string text, Rect frame, Font font, TextAlignment alignment = TextAlignment.Left, Pen pen = null, Brush brush = null) { if (brush == null) { return; } var sdfont = new System.Drawing.Font(font.Family, (float)font.Size, FontStyle.Regular, GraphicsUnit.Pixel); var sz = graphics.MeasureString(text, sdfont); var point = frame.Position; var fr = new Rect(point, new Size(sz.Width, sz.Height)); graphics.DrawString(text, sdfont, Conversions.GetBrush(brush, fr), Conversions.GetPointF(point - new Point(0, sdfont.Height))); }
public void DrawText(string text, Rect frame, Font font, TextAlignment alignment = TextAlignment.Left, Pen pen = null, Brush brush = null) { var brushToUse = brush ?? Brushes.Black; var netFont = new System.Drawing.Font(font.Family, (float)font.Size, FontStyle.Regular, GraphicsUnit.Pixel); var sz = graphics.MeasureString(text, netFont); var asc = netFont.FontFamily.GetCellAscent(netFont.Style); var desc = netFont.FontFamily.GetCellDescent(netFont.Style); var ascale = sz.Height / (asc + desc); var point = frame.Position; var fr = new Rect(point, new Size(sz.Width, sz.Height)); graphics.DrawString(text, netFont, Conversions.GetBrush(brushToUse, fr), Conversions.GetPointF(point - new Point(0, sz.Height - desc * ascale))); }