public void DoRender() { if (_viewHost.View == null || !DoPreRender()) { return; } var view = _viewHost.View; //Measure var available = new ValueRenderSize(_context.Size); if (available.IsEmpty) { return; } //_measureContext.ViewState = _viewHost; //_measureContext.UpdateContextBounds(available); var desired = _measureContext.MeasureMainView(view, available, _viewHost); _renderRect.Size = desired; //arrange //_renderContext.ViewState = _viewHost; //---------------------------- _renderContext.DrawMainElement(view, _renderRect, _viewHost); //---------------------------- // var _pen = new Pen(Color.White, 2); // _renderContext.DrawLine(_pen, new Point(10, 10), new Point(50, 50)); //---------------------------- DoPostRender(); }
private void OnRendering(Object sender, EventArgs e) { _sbSelected.Clear(); _isChanged = false; var element = _viewHost.View; //MeasureContext.ViewState = _viewHost; var size = new ValueRenderSize(_viewHost.RenderMargin.Width, _viewHost.RenderMargin.Height); var measured = MeasureContext.MeasureMainView(element, size, _viewHost); var selectedVisual = SelectedVisuals?.FirstOrDefault(); if (selectedVisual == null) { return; } _sbSelected.AppendLine(element.ToString()); _sbSelected.AppendLine("Measured: " + measured); _sbSelected.AppendLine("Arranged: " + selectedVisual.Position); var nonDefaults = GetNonDefaultSetters(element).ToArray(); foreach (var kvp in nonDefaults) { _sbSelected.AppendLine(kvp.ToString()); } //_sbSelected.AppendLine(kvp.Key + ": " + kvp.Value); _rightRectangle = new Rectangle(_viewHost.AvailableSize.Width - _viewHost.RenderMargin.Right, 0, _viewHost.RenderMargin.Width, _viewHost.AvailableSize.Height); //RenderContext.ViewState = _viewHost; RenderContext.FillRectangle(_rightRectangle, SolidColorBrush.DarkGray); if (selectedVisual.Element == null) { return; } RenderContext.DrawString(_sbSelected.ToString(), _font, _rightRectangle, SolidColorBrush.White); }
public static Bitmap?DoRender(IVisualElement view, StaticGdiRenderKit renderKit, Color?backgroundColor, Double dpi, ValueRenderSize availableSize, IColorPalette colorPalette) { var viewState = new StaticViewState(dpi, colorPalette); var desired = renderKit.MeasureContext.MeasureMainView(view, availableSize, viewState); if (!desired.IsValid) { return(default);
protected override void OnMeasure(Int32 widthMeasureSpec, Int32 heightMeasureSpec) { base.OnMeasure(widthMeasureSpec, heightMeasureSpec); var w = MeasuredWidth; var h = MeasuredHeight; var sz = new ValueRenderSize(w, h); _measureContext.MeasureMainView(_view, sz, _viewState); _targetRect = new ValueRectangle( 0, // X 0, // Y sz.Width / _viewState.ZoomLevel, sz.Height / _viewState.ZoomLevel); }
protected override void OnMeasure(Int32 widthMeasureSpec, Int32 heightMeasureSpec) { base.OnMeasure(widthMeasureSpec, heightMeasureSpec); var w = MeasuredWidth; var h = MeasuredHeight; var sz = new ValueRenderSize(w, h); _targetRect = new ValueRectangle( 0, // X 0, // Y sz.Width / ZoomLevel, sz.Height / ZoomLevel); var count = ChildCount; for (var c = 0; c < count; c++) { var current = GetChildAt(c); if (current is IVisualSurrogate) { current.Measure(Convert.ToInt32(_targetRect.Width), Convert.ToInt32(_targetRect.Height)); } else { current?.Measure(widthMeasureSpec, heightMeasureSpec); } } _measured = new ValueSize(sz.Width, sz.Height); RenderKit.MeasureContext.MeasureMainView(_view, sz, _viewState); if (_refreshLoopCount == 0) { _refreshLoopCount++; var _ = RefreshLoop(); } }
public ValueSize MeasureMainView <TRenderSize>(IVisualElement element, TRenderSize availableSpace, IViewState viewState) where TRenderSize : IRenderSize { //Debug.WriteLine("********** BEGIN MEASURE ***********"); ViewState = viewState; if (viewState.ZoomLevel.AreDifferent(1.0)) { var zoomWidth = availableSpace.Width / viewState.ZoomLevel; var zoomHeight = availableSpace.Height / viewState.ZoomLevel; if (_contextBounds.Width.AreDifferent(zoomWidth) || _contextBounds.Height.AreDifferent(zoomHeight)) { _contextBounds = new ValueSize(zoomWidth, zoomHeight); } var availableSpace2 = new ValueRenderSize(zoomWidth, zoomHeight, availableSpace.Offset); //Debug.WriteLine("********** END MEASURE ***********"); return(MeasureElement(element, availableSpace2)); } if (_contextBounds.Width.AreDifferent(availableSpace.Width) || _contextBounds.Height.AreDifferent(availableSpace.Height)) { _contextBounds = new ValueSize(availableSpace); } var res = MeasureElement(element, availableSpace); //Debug.WriteLine("********** END MEASURE ***********"); return(res); }