/// <summary> /// /// </summary> /// <param name="gameObject"></param> public void canvasUpdateImage(IGameObject gameObject) { Debug.Assert(gameObject != null, "expected gameObject != null"); Debug.Assert(this.uiThreadImageUidMapByGameObject.ContainsKey(gameObject), "you must display this gameObject before try to update it."); String uiThreadImageUid = this.uiThreadImageUidMapByGameObject[gameObject]; ImageSource imageSourceFrozen = (ImageSource)gameObject.getImage().Source.GetAsFrozen(); double imageWidth = gameObject.getImage().Width; double imageHeight = gameObject.getImage().Height; Stretch streachImage = gameObject.getImage().Stretch; StretchDirection streachDirection = gameObject.getImage().StretchDirection; Transform renderTransformFrozen = gameObject.getImage().RenderTransform != null ? (Transform)gameObject.getImage().RenderTransform.GetAsFrozen() : null; this.targetCanvas.Dispatcher.Invoke(new Action( delegate() { UIElement uiElement = this.uiThreadGetUiElement(uiThreadImageUid); int zIndex = Canvas.GetZIndex(uiElement); this.targetCanvas.Children.Remove(uiElement); Image uiThreadImage = new Image(); uiThreadImage.Uid = uiThreadImageUid; uiThreadImage.Source = imageSourceFrozen; uiThreadImage.Width = imageWidth; uiThreadImage.Height = imageHeight; uiThreadImage.Stretch = streachImage; uiThreadImage.StretchDirection = streachDirection; uiThreadImage.RenderTransform = renderTransformFrozen; this.targetCanvas.Children.Add(uiThreadImage); this.uiThreadSetCanvasPosition(uiThreadImage, gameObject.getXPosition(), gameObject.getYPosition(), zIndex); } )); }
public void clearImageTransformation(IGameObject gameObject) { gameObject.getImage().RenderTransform = null; }
/// <summary> /// /// </summary> /// <param name="gameObject"></param> public void canvasDisplayImage(IGameObject gameObject, int zIndex) { Debug.Assert(gameObject != null, "expected gameObject != null"); Debug.Assert(gameObject.getImage() != null, "cannot display this gameObject because its image is null."); Debug.Assert(!this.uiThreadImageUidMapByGameObject.ContainsKey(gameObject), "this gameObject was already present in the canvas, try to remove it before ask to display again"); Image nonUiThreadImage = gameObject.getImage(); ImageSource imageSourceFrozen = (ImageSource) nonUiThreadImage.Source.GetAsFrozen(); double imageWidth = nonUiThreadImage.Width; double imageHeight = nonUiThreadImage.Height; Stretch streachImage = nonUiThreadImage.Stretch; StretchDirection streachDirection = nonUiThreadImage.StretchDirection; Transform renderTransformFrozen = (Transform)nonUiThreadImage.RenderTransform.GetAsFrozen(); String uid = Guid.NewGuid().ToString(); this.targetCanvas.Dispatcher.Invoke(new Action( delegate() { Image uiThreadImage = new Image(); uiThreadImage.Uid = uid; uiThreadImage.Source = imageSourceFrozen; uiThreadImage.Width = imageWidth; uiThreadImage.Height = imageHeight; uiThreadImage.Stretch = streachImage; uiThreadImage.StretchDirection = streachDirection; uiThreadImage.RenderTransform = renderTransformFrozen; this.targetCanvas.Children.Add(uiThreadImage); this.uiThreadSetCanvasPosition(uiThreadImage, gameObject.getXPosition(), gameObject.getYPosition(), zIndex); } )); this.uiThreadImageUidMapByGameObject.Add(gameObject, uid); }