public SizeRequest Measure(double widthConstraint, double heightConstraint, MeasureFlags flags = MeasureFlags.None) { bool includeMargins = (flags & MeasureFlags.IncludeMargins) != 0; Thickness margin = default(Thickness); if (includeMargins) { var view = this as View; if (view != null) { margin = view.Margin; } widthConstraint = Math.Max(0, widthConstraint - margin.HorizontalThickness); heightConstraint = Math.Max(0, heightConstraint - margin.VerticalThickness); } #pragma warning disable 0618 // retain until GetSizeRequest removed SizeRequest result = GetSizeRequest(widthConstraint, heightConstraint); #pragma warning restore 0618 if (includeMargins) { if (!margin.IsDefault) { result.Minimum = new Size(result.Minimum.Width + margin.HorizontalThickness, result.Minimum.Height + margin.VerticalThickness); result.Request = new Size(result.Request.Width + margin.HorizontalThickness, result.Request.Height + margin.VerticalThickness); } } return(result); }
public SizeRequest Measure(double widthConstraint, double heightConstraint, MeasureFlags flags = MeasureFlags.None) { bool includeMargins = (flags & MeasureFlags.IncludeMargins) != 0; Thickness margin = default(Thickness); if (includeMargins) { var view = this as View; if (view != null) margin = view.Margin; widthConstraint = Math.Max(0, widthConstraint - margin.HorizontalThickness); heightConstraint = Math.Max(0, heightConstraint - margin.VerticalThickness); } #pragma warning disable 0618 // retain until GetSizeRequest removed SizeRequest result = GetSizeRequest(widthConstraint, heightConstraint); #pragma warning restore 0618 if (includeMargins) { if (!margin.IsDefault) { result.Minimum = new Size(result.Minimum.Width + margin.HorizontalThickness, result.Minimum.Height + margin.VerticalThickness); result.Request = new Size(result.Request.Width + margin.HorizontalThickness, result.Request.Height + margin.VerticalThickness); } } return result; }
public static SizeRequest MeasureLabel(Label label, string text, double widthConstraint = double.PositiveInfinity, double heightConstraint = double.PositiveInfinity, MeasureFlags flags = MeasureFlags.IncludeMargins) { var key = new CachLabelMeasureKey { font = label.Font, fontSize = label.FontSize, fontFamily = label.FontFamily, lineBreakMode = label.LineBreakMode, text = text, margin = label.Margin, widthConstraint = widthConstraint, heightConstraint = heightConstraint, flags = flags, }; SizeRequest size; if (!CachLabelMeasure.TryGetValue(key, out size)) { var extext = label.Text; label.Text = text; size = Measure(label, widthConstraint, heightConstraint, flags); label.Text = extext; CachLabelMeasure.Add(key, size); } return(size); }
public static SizeRequest Measure(VisualElement view, double widthConstraint, double heightConstraint, MeasureFlags flags = MeasureFlags.IncludeMargins) { var req = view.Measure(double.PositiveInfinity, double.PositiveInfinity, MeasureFlags.IncludeMargins); return(req); }