MeasureText() public method

public MeasureText ( IntPtr buffer, IntPtr length ) : float
buffer System.IntPtr
length System.IntPtr
return float
Ejemplo n.º 1
1
		public static void MeasureTextSample (SKCanvas canvas, int width, int height)
		{
			canvas.DrawColor (SKColors.White);

			using (var paint = new SKPaint ()) {
				paint.TextSize = 64.0f;
				paint.IsAntialias = true;
				paint.Color = new SKColor (0x42, 0x81, 0xA4);
				paint.TextEncoding = SKTextEncoding.Utf32;

				canvas.DrawText ("Skia (UTF-32)", 0, 64.0f, paint);

				var bounds = new SKRect();
				paint.MeasureText ("Skia (UTF-32)", ref bounds);
				bounds.Top += 64.0f;
				bounds.Bottom += 64.0f;

				paint.IsStroke = true;
				paint.Color = SKColors.Red;

				canvas.DrawRect (bounds, paint);
			}

			using (var paint = new SKPaint ()) {
				paint.TextSize = 64.0f;
				paint.IsAntialias = true;
				paint.Color = new SKColor (0x9C, 0xAF, 0xB7);
				paint.TextEncoding = SKTextEncoding.Utf16;

				canvas.DrawText ("Skia (UTF-16)", 0, 144.0f, paint);

				var bounds = new SKRect();
				paint.MeasureText ("Skia (UTF-16)", ref bounds);
				bounds.Top += 144.0f;
				bounds.Bottom += 144.0f;

				paint.IsStroke = true;
				paint.Color = SKColors.Red;

				canvas.DrawRect (bounds, paint);
			}

			using (var paint = new SKPaint ()) {
				paint.TextSize = 64.0f;
				paint.IsAntialias = true;
				paint.Color = new SKColor (0xE6, 0xB8, 0x9C);
				paint.TextEncoding = SKTextEncoding.Utf8;

				canvas.DrawText ("Skia (UTF-8)", 0, 224.0f, paint);

				var bounds = new SKRect();
				paint.MeasureText ("Skia (UTF-8)", ref bounds);
				bounds.Top += 224.0f;
				bounds.Bottom += 224.0f;

				paint.IsStroke = true;
				paint.Color = SKColors.Red;

				canvas.DrawRect (bounds, paint);
			}
		}
Ejemplo n.º 2
0
        private void ReadTextSpans(XElement e, SKCanvas canvas, SKPoint location, SKPaint stroke, SKPaint fill)
        {
            var nodes = e.Nodes().ToArray();

            for (int i = 0; i < nodes.Length; i++)
            {
                var  c       = nodes[i];
                bool isFirst = i == 0;
                bool isLast  = i == nodes.Length - 1;

                if (c.NodeType == XmlNodeType.Text)
                {
                    // TODO: check for preserve whitespace

                    var textSegments = ((XText)c).Value.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
                    var count        = textSegments.Length;
                    if (count > 0)
                    {
                        if (isFirst)
                        {
                            textSegments[0] = textSegments[0].TrimStart();
                        }
                        if (isLast)
                        {
                            textSegments[count - 1] = textSegments[count - 1].TrimEnd();
                        }
                        var text = WSRe.Replace(string.Concat(textSegments), " ");

                        canvas.DrawText(text, location.X, location.Y, fill);

                        location.X += fill.MeasureText(text);
                    }
                }
                else if (c.NodeType == XmlNodeType.Element)
                {
                    var ce = (XElement)c;
                    if (ce.Name.LocalName == "tspan")
                    {
                        var spanFill = fill.Clone();

                        // the current span may want to change the cursor position
                        location.X = ReadOptionalNumber(ce.Attribute("x")) ?? location.X;
                        location.Y = ReadOptionalNumber(ce.Attribute("y")) ?? location.Y;

                        ReadFontAttributes(ce, spanFill);

                        var text = ce.Value.Trim();

                        canvas.DrawText(text, location.X, location.Y, spanFill);

                        location.X += spanFill.MeasureText(text);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private static SKBitmap CreateLabelAsBitmap(LabelStyle style, string text, SKPaint paint)
        {
            var rect = new SKRect();
            paint.MeasureText(text, ref rect);

            var backRect = new SKRect(0, 0, rect.Width + 6, rect.Height + 6);

            var bitmap = new SKBitmap((int)backRect.Width, (int)backRect.Height);

            using (var target = new SKCanvas(bitmap))
            {
                target.Clear();

                DrawBackground(style, backRect, target);
                target.DrawText(text, -rect.Left + 3, -rect.Top +3, paint);
                return bitmap;
            }
        }
Ejemplo n.º 4
0
        public static void MeasureTextSample(SKCanvas canvas, int width, int height)
        {
            canvas.DrawColor(SKColors.White);

            using (var paint = new SKPaint()) {
                paint.TextSize     = 64.0f;
                paint.IsAntialias  = true;
                paint.Color        = new SKColor(0x42, 0x81, 0xA4);
                paint.TextEncoding = SKTextEncoding.Utf32;

                canvas.DrawText("Skia (UTF-32)", 0, 64.0f, paint);

                var bounds = new SKRect();
                paint.MeasureText("Skia (UTF-32)", ref bounds);
                bounds.Top    += 64.0f;
                bounds.Bottom += 64.0f;

                paint.IsStroke = true;
                paint.Color    = SKColors.Red;

                canvas.DrawRect(bounds, paint);
            }

            using (var paint = new SKPaint()) {
                paint.TextSize     = 64.0f;
                paint.IsAntialias  = true;
                paint.Color        = new SKColor(0x9C, 0xAF, 0xB7);
                paint.TextEncoding = SKTextEncoding.Utf16;

                canvas.DrawText("Skia (UTF-16)", 0, 144.0f, paint);

                var bounds = new SKRect();
                paint.MeasureText("Skia (UTF-16)", ref bounds);
                bounds.Top    += 144.0f;
                bounds.Bottom += 144.0f;

                paint.IsStroke = true;
                paint.Color    = SKColors.Red;

                canvas.DrawRect(bounds, paint);
            }

            using (var paint = new SKPaint()) {
                paint.TextSize     = 64.0f;
                paint.IsAntialias  = true;
                paint.Color        = new SKColor(0xE6, 0xB8, 0x9C);
                paint.TextEncoding = SKTextEncoding.Utf8;

                canvas.DrawText("Skia (UTF-8)", 0, 224.0f, paint);

                var bounds = new SKRect();
                paint.MeasureText("Skia (UTF-8)", ref bounds);
                bounds.Top    += 224.0f;
                bounds.Bottom += 224.0f;

                paint.IsStroke = true;
                paint.Color    = SKColors.Red;

                canvas.DrawRect(bounds, paint);
            }
        }