예제 #1
0
		public static async Task<Bitmap> GetBitmapAsync (SvgImage svgImage, int width, int height)
		{
			Bitmap result = null;

			Stream svgStream = await SvgService.GetSvgStreamAsync (svgImage).ConfigureAwait (false);

      await Task.Run(() =>
      {
          var svgReader = new SvgReader(new StreamReader(svgStream));

        var graphics = svgReader.Graphic;

        var scale = 1.0;

        if (height >= width)
        {
          scale = height / graphics.Size.Height;
        }
        else
        {
          scale = width / graphics.Size.Width;
        }

        var canvas = new AndroidPlatform().CreateImageCanvas(graphics.Size, scale);
        graphics.Draw(canvas);
        var image = (BitmapImage)canvas.GetImage();
        result = image.Bitmap;
      });

			return result;
		}
예제 #2
0
        public void DrawText(string text, Rect frame, Font font, TextAlignment alignment = TextAlignment.Left, Pen pen = null, Brush brush = null)
        {
            if (brush == null)
            {
                return;
            }

            var paint = AndroidPlatform.GlobalGetFontPaint(font, alignment);
            var w     = paint.MeasureText(text);
            var fm    = paint.GetFontMetrics();
            var h     = fm.Ascent + fm.Descent;
            var point = alignment == TextAlignment.Left
                                ? frame.TopLeft
                                : alignment == TextAlignment.Center
                                        ? (frame.TopLeft + frame.TopRight) / 2
                                        : frame.TopRight;
            var fr = new Rect(point, new Size(w, h));

            AddBrushPaint(paint, brush, fr);
            graphics.DrawText(text, (float)point.X, (float)point.Y, paint);
        }
예제 #3
0
 public TextMetrics MeasureText(string text, Font font)
 {
     return(AndroidPlatform.GlobalMeasureText(text, font));
 }