Esempio n. 1
0
        //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));
        }
Esempio n. 2
0
        //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);
 }