private Obany.Render.Objects.Canvas CreateCanvas() { Obany.Render.Objects.Canvas canvas = new Obany.Render.Objects.Canvas(); canvas.Width = _inkPresenter.Width; canvas.Height = _inkPresenter.Height; canvas.Colour = "#FFFFFFFF"; canvas.Children = new List <Obany.Render.Objects.BaseObject>(); canvas.Strokes = new List <Obany.Render.Objects.Stroke>(); foreach (UIElement uiElement in _uiElements) { TextBlock textBlock = uiElement as TextBlock; if (textBlock != null) { canvas.Children.Add(new Obany.Render.Objects.TextBlock(Canvas.GetLeft(uiElement), Canvas.GetTop(uiElement), double.NaN, double.NaN, Canvas.GetZIndex(uiElement), textBlock.Text, textBlock.FontFamily.Source, textBlock.FontSize, (textBlock.Foreground as SolidColorBrush).Color.ToString())); } else { Rectangle rectangle = uiElement as Rectangle; if (rectangle != null) { canvas.Children.Add(new Obany.Render.Objects.Rectangle(Canvas.GetLeft(uiElement), Canvas.GetTop(uiElement), rectangle.Width, rectangle.Height, Canvas.GetZIndex(uiElement), (rectangle.Fill as SolidColorBrush).Color.ToString())); } else { Image image = uiElement as Image; if (image != null) { string resourceId = null; byte[] imageData = null; string mimeType = ""; object[] data = (object[])image.Tag; if (data != null) { if (data.Length == 3) { resourceId = (string)data[1]; mimeType = (string)data[2]; if (string.IsNullOrEmpty(resourceId)) { System.IO.MemoryStream ms = (System.IO.MemoryStream)data[0]; if (ms != null) { imageData = ms.ToArray(); } } } } canvas.Children.Add(new Obany.Render.Objects.Image(Canvas.GetLeft(uiElement), Canvas.GetTop(uiElement), image.Width, image.Height, Canvas.GetZIndex(uiElement), imageData, mimeType, "", resourceId)); } } } } foreach (Stroke stroke in _inkPresenter.Strokes) { Obany.Render.Objects.Stroke canvasStroke = new Obany.Render.Objects.Stroke(); canvasStroke.Width = stroke.DrawingAttributes.Width; canvasStroke.Height = stroke.DrawingAttributes.Height; canvasStroke.Colour = stroke.DrawingAttributes.Color.ToString(); canvasStroke.Points = new List <Obany.Render.Objects.StrokePoint>(); foreach (StylusPoint stylusPoint in stroke.StylusPoints) { canvasStroke.Points.Add(new Obany.Render.Objects.StrokePoint(stylusPoint.X, stylusPoint.Y)); } canvas.Strokes.Add(canvasStroke); } return(canvas); }
private Obany.Render.Objects.Canvas CreateCanvas() { Obany.Render.Objects.Canvas canvas = new Obany.Render.Objects.Canvas(); canvas.Width = _inkPresenter.Width; canvas.Height = _inkPresenter.Height; canvas.Colour = "#FFFFFFFF"; canvas.Children = new List<Obany.Render.Objects.BaseObject>(); canvas.Strokes = new List<Obany.Render.Objects.Stroke>(); foreach (UIElement uiElement in _uiElements) { TextBlock textBlock = uiElement as TextBlock; if (textBlock != null) { canvas.Children.Add(new Obany.Render.Objects.TextBlock(Canvas.GetLeft(uiElement), Canvas.GetTop(uiElement), double.NaN, double.NaN, Canvas.GetZIndex(uiElement), textBlock.Text, textBlock.FontFamily.Source, textBlock.FontSize, (textBlock.Foreground as SolidColorBrush).Color.ToString())); } else { Rectangle rectangle = uiElement as Rectangle; if (rectangle != null) { canvas.Children.Add(new Obany.Render.Objects.Rectangle(Canvas.GetLeft(uiElement), Canvas.GetTop(uiElement), rectangle.Width, rectangle.Height, Canvas.GetZIndex(uiElement), (rectangle.Fill as SolidColorBrush).Color.ToString())); } else { Image image = uiElement as Image; if (image != null) { string resourceId = null; byte[] imageData = null; string mimeType = ""; object[] data = (object[])image.Tag; if (data != null) { if (data.Length == 3) { resourceId = (string)data[1]; mimeType = (string)data[2]; if (string.IsNullOrEmpty(resourceId)) { System.IO.MemoryStream ms = (System.IO.MemoryStream)data[0]; if (ms != null) { imageData = ms.ToArray(); } } } } canvas.Children.Add(new Obany.Render.Objects.Image(Canvas.GetLeft(uiElement), Canvas.GetTop(uiElement), image.Width, image.Height, Canvas.GetZIndex(uiElement), imageData, mimeType, "", resourceId)); } } } } foreach (Stroke stroke in _inkPresenter.Strokes) { Obany.Render.Objects.Stroke canvasStroke = new Obany.Render.Objects.Stroke(); canvasStroke.Width = stroke.DrawingAttributes.Width; canvasStroke.Height = stroke.DrawingAttributes.Height; canvasStroke.Colour = stroke.DrawingAttributes.Color.ToString(); canvasStroke.Points = new List<Obany.Render.Objects.StrokePoint>(); foreach (StylusPoint stylusPoint in stroke.StylusPoints) { canvasStroke.Points.Add(new Obany.Render.Objects.StrokePoint(stylusPoint.X, stylusPoint.Y)); } canvas.Strokes.Add(canvasStroke); } return (canvas); }