Beispiel #1
0
        /// <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);

                }
             ));
        }
Beispiel #2
0
 public void clearImageTransformation(IGameObject gameObject)
 {
     gameObject.getImage().RenderTransform = null;
 }
Beispiel #3
0
        /// <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);
        }