//http://egoco.de/post/19077604048/calculating-the-height-of-text-in-android //http://stackoverflow.com/questions/16082359/how-to-auto-adjust-text-size-on-a-multi-line-textview-according-to-the-view-max public SizeF MeasureString(string text, int maxWidth = 2147483647) { TextPaint paint = AndroidBrush.CreateTextPaint(); paint.TextSize = SizeInPoints; paint.SetTypeface(InnerFont); AndroidTextLayout layout = new AndroidTextLayout(paint); return(layout.MeasureString(text, maxWidth)); }
//http://egoco.de/post/19077604048/calculating-the-height-of-text-in-android //http://stackoverflow.com/questions/16082359/how-to-auto-adjust-text-size-on-a-multi-line-textview-according-to-the-view-max public SizeF MeasureString(string text, int maxWidth = 2147483647) { var key = new TextMeasureKey(text, InnerFont, SizeInPoints, maxWidth); return(_measurements.GetOrAdd(key, k => { TextPaint paint = AndroidBrush.CreateTextPaint(); paint.TextSize = k.SizeInPoints; paint.SetTypeface(k.Font); AndroidTextLayout layout = new AndroidTextLayout(paint); return layout.MeasureString(k.Text, k.MaxWidth); })); }
public void DrawText(string text, ITextConfig config, AGS.API.SizeF textSize, AGS.API.SizeF baseSize, int maxWidth, int height, float xOffset) { //_height = height; todo: support height _text = text; _config = config; _maxWidth = maxWidth; TextPaint paint = getPaint(_config.Brush); float centerX = xOffset + _config.AlignX(textSize.Width, baseSize); float centerY = _config.AlignY(_bitmap.Height, textSize.Height, baseSize); float left = centerX - _config.OutlineWidth / 2f; float top = centerY - _config.OutlineWidth / 2f; float right = left + _config.OutlineWidth; float bottom = top + _config.OutlineWidth; var canvas = _canvas; if (_config.OutlineWidth > 0f) { TextPaint outlinePaint = getPaint(_config.OutlineBrush); AndroidTextLayout outlineLayout = new AndroidTextLayout(outlinePaint); drawString(canvas, outlineLayout, left, top); drawString(canvas, outlineLayout, centerX, top); drawString(canvas, outlineLayout, right, top); drawString(canvas, outlineLayout, left, centerY); drawString(canvas, outlineLayout, right, centerY); drawString(canvas, outlineLayout, left, bottom); drawString(canvas, outlineLayout, centerX, bottom); drawString(canvas, outlineLayout, right, bottom); } if (_config.ShadowBrush != null) { TextPaint shadowPaint = getPaint(_config.ShadowBrush); drawString(canvas, new AndroidTextLayout(shadowPaint), centerX + _config.ShadowOffsetX, centerY + _config.ShadowOffsetY); } drawString(canvas, new AndroidTextLayout(paint), centerX, centerY); }
private void drawString(Canvas gfx, AndroidTextLayout layout, float x, float y) { layout.DrawString(gfx, _text, x, y, alignWrap(), _maxWidth); }