protected void Update(LayoutMetrics metrics) { if (metrics == null) { return; } try { TheCanvas.Children.Clear(); _Min = new Point(metrics.VisualOffset.X, metrics.VisualOffset.Y); _Max = new Point(_Min.X + (metrics.ActualWidth ?? 0.0), _Min.Y + (metrics.ActualHeight ?? 0.0)); var actualr = new Rectangle { Width = (metrics.ActualWidth ?? 0.0), Height = (metrics.ActualHeight ?? 0.0) }; Canvas.SetLeft(actualr, metrics.VisualOffset.X); Canvas.SetTop(actualr, metrics.VisualOffset.Y); var ax = metrics.AbsoluteXform; actualr.RenderTransform = new MatrixTransform(ax[0], ax[1], ax[3], ax[4], ax[2], ax[5]); actualr.Stroke = new SolidColorBrush(Colors.Black); actualr.StrokeThickness = 2; TheCanvas.Children.Add(actualr); } catch (Exception) { } InitBackground(); Fit(); }
public LayoutMetrics GetLayoutMetrics(int id) { IsAlive = VerifyInterop(); if (!IsAlive) { return(null); } var json = RunFunc("GetLayoutMetrics", id.ToString()); //JsonConvert.DeserializeObject<JsLayoutMetrics>(json); //dynamic des = JsonConvert.DeserializeObject<dynamic>(json); return(LayoutMetrics.FromJson(json)); }
public static IPrimitive Layout(this IElement element, LayoutContext layoutContext) { // record this layout LayoutMetrics.Record(element); try { if (element is IComposite) { return(layoutContext.LayoutResolver.Layout(element, layoutContext)); } else { return((IPrimitive)element); } } finally { LayoutMetrics.Complete(); } }