protected override void OnRenderCore(DrawingContext dc, RenderState state)
		{
			if (DataSource == null) return;
			if (Marker == null) return;

			var transform = Plotter2D.Viewport.Transform;

			DataRect bounds = DataRect.Empty;
			using (IPointEnumerator enumerator = DataSource.GetEnumerator(GetContext()))
			{
				Point point = new Point();
				while (enumerator.MoveNext())
				{
					enumerator.GetCurrent(ref point);
					enumerator.ApplyMappings(Marker);

					//Point screenPoint = point.Transform(state.Visible, state.Output);
					Point screenPoint = point.DataToScreen(transform);

					bounds = DataRect.Union(bounds, point);
					Marker.Render(dc, screenPoint);
				}
			}

			Viewport2D.SetContentBounds(this, bounds);
		}
        protected override void OnRenderCore(DrawingContext dc, RenderState state)
        {
            if (Marker == null)
                return;

            if (DataSource == null) // No data is specified
            {
                if (canvas != null)
                {
                    foreach (UIElement child in canvas.Children)
                        unused.Add(child);
                    canvas.Children.Clear();
                }
            }
            else // There is some data
            {
          
                int index = 0;
                var transform = GetTransform();
                using (IPointEnumerator enumerator = DataSource.GetEnumerator(GetContext()))
                {
                    Point point = new Point();

					DataRect bounds = DataRect.Empty;

                    while (enumerator.MoveNext())
                    {
                        enumerator.GetCurrent(ref point);
                        enumerator.ApplyMappings(Marker);

                        if (index >= canvas.Children.Count)
                        {
                            UIElement newMarker;
                            if (unused.Count > 0)
                            {
                                newMarker = unused[unused.Count - 1];
                                unused.RemoveAt(unused.Count - 1);
                            }
                            else
                                newMarker = Marker.CreateMarker();
                            canvas.Children.Add(newMarker);
                        }

                        Marker.SetMarkerProperties(canvas.Children[index]);
						bounds.Union(point);
                        Point screenPoint = point.DataToScreen(transform);
                        Marker.SetPosition(canvas.Children[index], screenPoint);
                        index++;
                    }

					Viewport2D.SetContentBounds(this, bounds);

                    while (index < canvas.Children.Count)
                    {
                        unused.Add(canvas.Children[index]);
                        canvas.Children.RemoveAt(index);
                    }
                }
            }
        }
		protected override void OnRenderCore(DrawingContext dc, RenderState state)
		{
			if (DataSource == null)
			{
				markers.Clear();
				canvas.Children.Clear();
				return;
			}

			if (Marker == null) return;

			var transform = Viewport.Transform;

			if (markers.Count == 0)
			{
				Rect bounds = Rect.Empty;
				using (IPointEnumerator enumerator = DataSource.GetEnumerator(GetContext()))
				{
					Point point = new Point();
					while (enumerator.MoveNext())
					{
						enumerator.GetCurrent(ref point);
						enumerator.ApplyMappings(Marker);

						Point screenPoint = point.DataToScreen(transform);
						if (!screenPoint.IsFinite())
							continue;

						bounds = Rect.Union(bounds, point);
						UIElement marker = Marker.CreateMarker();
						Marker.SetPosition(marker, screenPoint);

						// todo было раскомментировано. Сделать хранение маркеров и добавление их на плоттер.
						canvas.Children.Add(marker);
						markers.Add(marker);
					}
				}
				ContentBounds = bounds;
			}
			else
			{
				int index = 0;
				using (IPointEnumerator enumerator = DataSource.GetEnumerator(GetContext()))
				{
					Point point = new Point();
					while (enumerator.MoveNext())
					{
						enumerator.GetCurrent(ref point);
						Point screenPoint = point.DataToScreen(transform);
						Marker.SetPosition(markers[index++], screenPoint);
					}
				}
			}
		}
        protected override void OnRenderCore(DrawingContext dc, RenderState state)
        {
            if (DataSource == null) return;
            if (Marker == null) return;

            Rect bounds = Rect.Empty;
            using (IPointEnumerator enumerator = DataSource.GetEnumerator(GetContext()))
            {
                Point point = new Point();
                while (enumerator.MoveNext())
                {
                    enumerator.GetCurrent(ref point);
                    enumerator.ApplyMappings(Marker);

                    Point screenPoint = point.Transform(state.Visible, state.Output);

                    bounds = Rect.Union(bounds, point);
                    Marker.Render(dc, screenPoint);
                }
            }

            ContentBounds = bounds;
        }
 protected override void OnRenderCore(DrawingContext dc, RenderState state)
 {
     if (completedRequest != null && completedBitmap != null)
         dc.DrawImage(completedBitmap, completedRequest.Visible.ViewportToScreen(Viewport.Transform));
 }
Beispiel #6
0
		protected override void OnRenderCore(DrawingContext dc, RenderState state)
		{
			if (DataSource == null) return;

			if (filteredPoints.HasPoints)
			{

				using (StreamGeometryContext context = streamGeometry.Open())
				{
					context.BeginFigure(filteredPoints.StartPoint, false, false);
					context.PolyLineTo(filteredPoints, true, smoothLinesJoin);
				}

				Brush brush = null;
				Pen pen = LinePen;

				bool isTranslated = IsTranslated;
				if (isTranslated)
				{
					dc.PushTransform(new TranslateTransform(Offset.X, Offset.Y));
				}
				dc.DrawGeometry(brush, pen, streamGeometry);
				if (isTranslated)
				{
					dc.Pop();
				}

#if __DEBUG
				FormattedText text = new FormattedText(filteredPoints.Count.ToString(),
					CultureInfo.InvariantCulture, FlowDirection.LeftToRight,
					new Typeface("Arial"), 12, Brushes.Black);
				dc.DrawText(text, Viewport.Output.GetCenter());
#endif
			}
		}
Beispiel #7
0
		protected override void OnRenderCore(DrawingContext dc, RenderState state)
		{
			Rect outputWMargin = state.Output;
			var transform = Viewport.Transform;

			if (outputWMargin.Width == 0 || outputWMargin.Height == 0) return;

			StreamGeometry cachedGeom = new StreamGeometry();
			List<List<Point>> transformedPts = new List<List<Point>>();

			foreach (List<Point> list in points)
			{
				transformedPts.Add(list.DataToScreenAsList(transform));
			}

			cachedGeom = new StreamGeometry();
			using (StreamGeometryContext context = cachedGeom.Open())
			{
				foreach (List<Point> pts in transformedPts)
				{
					context.BeginFigure(pts[0], false, false);
					context.PolyLineTo(pts, true, true);
				}
			}
			cachedGeom.Freeze();
			dc.DrawGeometry(
				Brushes.LightGray,
				new Pen(Brushes.Black, 1),
				cachedGeom);
		}
		protected abstract void OnRenderCore(DrawingContext dc, RenderState state);
        protected override void OnRenderCore(DrawingContext dc, RenderState state)
        {
            if (Marker == null)
            {
                return;
            }

            if (DataSource == null)             // No data is specified
            {
                if (canvas != null)
                {
                    foreach (UIElement child in canvas.Children)
                    {
                        unused.Add(child);
                    }
                    canvas.Children.Clear();
                }
            }
            else             // There is some data
            {
                int index     = 0;
                var transform = GetTransform();
                using (IPointEnumerator enumerator = DataSource.GetEnumerator(GetContext()))
                {
                    Point point = new Point();

                    DataRect bounds = DataRect.Empty;

                    while (enumerator.MoveNext())
                    {
                        enumerator.GetCurrent(ref point);
                        enumerator.ApplyMappings(Marker);

                        if (index >= canvas.Children.Count)
                        {
                            UIElement newMarker;
                            if (unused.Count > 0)
                            {
                                newMarker = unused[unused.Count - 1];
                                unused.RemoveAt(unused.Count - 1);
                            }
                            else
                            {
                                newMarker = Marker.CreateMarker();
                            }
                            canvas.Children.Add(newMarker);
                        }

                        Marker.SetMarkerProperties(canvas.Children[index]);
                        bounds.Union(point);
                        Point screenPoint = point.DataToScreen(transform);
                        Marker.SetPosition(canvas.Children[index], screenPoint);
                        index++;
                    }

                    Viewport2D.SetContentBounds(this, bounds);

                    while (index < canvas.Children.Count)
                    {
                        unused.Add(canvas.Children[index]);
                        canvas.Children.RemoveAt(index);
                    }
                }
            }
        }
Beispiel #10
0
 protected abstract void OnRenderCore(DrawingContext dc, RenderState state);
Beispiel #11
0
        protected sealed override void OnRender(DrawingContext drawingContext)
        {
            if (Viewport == null)
            {
                return;
            }

            Rect output = Viewport.Output;

            if (output.Width == 0 || output.Height == 0)
            {
                return;
            }
            if (output.IsEmpty)
            {
                return;
            }
            if (Visibility != Visibility.Visible)
            {
                return;
            }

            if (shouldReRender || manualTranslate || renderTarget == RenderTo.Image || beforeFirstUpdate || updateCalled)
            {
                if (graphContents == null)
                {
                    graphContents = new DrawingGroup();
                }
                if (beforeFirstUpdate)
                {
                    Update();
                }

                using (DrawingContext context = graphContents.Open())
                {
                    if (renderTarget == RenderTo.Screen)
                    {
                        RenderState state = CreateRenderState(Viewport.Visible, RenderTo.Screen);
                        OnRenderCore(context, state);
                    }
                    else
                    {
                        // for future use
                    }
                }
                updateCalled = false;
            }

            // thumbnail is not created, if
            // 1) CreateThumbnail is false
            // 2) this graph has IsLayer property, set to false
            if (ShouldCreateThumbnail)
            {
                RenderThumbnail();
            }

            if (!manualClip)
            {
                drawingContext.PushClip(new RectangleGeometry(output));
            }
            bool translate = !manualTranslate && IsTranslated;

            if (translate)
            {
                drawingContext.PushTransform(new TranslateTransform(offset.X, offset.Y));
            }

            drawingContext.DrawDrawing(graphContents);

            if (translate)
            {
                drawingContext.Pop();
            }
            if (!manualClip)
            {
                drawingContext.Pop();
            }
            shouldReRender = true;
        }
 protected override void OnRenderCore(DrawingContext dc, RenderState state)
 {
  if (ItemsSource!=null && ItemsSource.GetEnumerator().MoveNext())
    try
    {
      base.OnRenderCore(dc, state);
    }
    catch (Exception e)
    { }
 }