public static void OnSelectRectHeightChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ImageOperationPanel panel = d as ImageOperationPanel;

            if (panel.mSelectedFrame == null)
            {
                return;
            }

            var idx = panel.mUVAnim.Frames.IndexOf(panel.mSelectedFrame);

            if (idx < 0)
            {
                return;
            }

            var newValue = (double)e.NewValue;// -panel.mUVDeltaOffset;

            if (double.IsNaN(newValue))
            {
                newValue = 0;
            }
            if (newValue > panel.Image_Pic.Height)
            {
                newValue = panel.Image_Pic.Height;
            }

            if (newValue < 0)
            {
                newValue = 0;
            }
            panel.mUsedRectangleList[idx].Height = newValue;
            panel.mSelectedFrame.SizeV           = (float)((newValue) / panel.mHeight);
            var noUse = panel.mSelectedFrame.UpdateScale9Infos();
        }
        public static void OnSelectRectTopChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ImageOperationPanel panel = d as ImageOperationPanel;

            if (panel.mSelectedFrame == null)
            {
                return;
            }

            var idx = panel.mUVAnim.Frames.IndexOf(panel.mSelectedFrame);

            if (idx < 0)
            {
                return;
            }

            var newValue = (double)e.NewValue;// +panel.mUVDeltaOffset;

            if (double.IsNaN(newValue) || newValue < 0)
            {
                newValue = 0;
            }

            Canvas.SetTop(panel.mUsedRectangleList[idx], newValue);
            Canvas.SetTop(panel.mUsedTextBlockList[idx], newValue);
            panel.mSelectedFrame.V = (float)((newValue) / panel.mHeight);
            var noUse = panel.mSelectedFrame.UpdateScale9Infos();
        }
        public static void OnTextureFileChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ImageOperationPanel control = d as ImageOperationPanel;

            control.Image_Pic.Source = null;

            var fileName = (EngineNS.RName)e.NewValue;

            if (fileName == null || fileName == EngineNS.RName.EmptyName)
            {
                return;
            }

            control.mTextureLoadSemaphore = EngineNS.Thread.ASyncSemaphore.CreateSemaphore(1);
            Action action = async() =>
            {
                var imgs = await EditorCommon.ImageInit.GetImage(fileName.Address);

                control.Image_Pic.Source = imgs[0];

                if (control.Image_Pic.Source != null)
                {
                    BitmapSource bitmap = control.Image_Pic.Source as BitmapSource;

                    control.mWidth  = bitmap.PixelWidth;
                    control.mHeight = bitmap.PixelHeight;

                    control.Image_Pic.Width  = bitmap.PixelWidth;
                    control.Image_Pic.Height = bitmap.PixelHeight;

                    control.ImageCanvas.Width  = bitmap.PixelWidth;
                    control.ImageCanvas.Height = bitmap.PixelHeight;

                    control.ImageViewBox.Width  = control.Image_Pic.Width;
                    control.ImageViewBox.Height = control.Image_Pic.Height;

                    Canvas.SetLeft(control.ImageViewBox, 0);
                    Canvas.SetTop(control.ImageViewBox, 0);

                    if (control.mSelectedFrame != null)
                    {
                        Canvas.SetLeft(control.Grid_SelectRect, control.mSelectedFrame.U * bitmap.PixelWidth);
                        Canvas.SetTop(control.Grid_SelectRect, control.mSelectedFrame.V * bitmap.PixelHeight);
                        control.Grid_SelectRect.Width  = control.mSelectedFrame.SizeU * bitmap.PixelWidth;
                        control.Grid_SelectRect.Height = control.mSelectedFrame.SizeV * bitmap.PixelHeight;
                    }
                }

                control.mTextureLoadSemaphore.Release();
            };

            action();
        }
        public static void OnViewBoxHeightChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ImageOperationPanel panel = d as ImageOperationPanel;

            double newValue = (double)e.NewValue;
            var    delta    = panel.Image_Pic.Height / newValue * 4;

            panel.Arrow_Left_L_Scale.ScaleY   = delta;
            panel.Arrow_Right_L_Scale.ScaleY  = delta;
            panel.Arrow_Left_R_Scale.ScaleY   = delta;
            panel.Arrow_Right_R_Scale.ScaleY  = delta;
            panel.Arrow_Up_U_Scale.ScaleY     = delta;
            panel.Arrow_Bottom_U_Scale.ScaleY = delta;
            panel.Arrow_Up_B_Scale.ScaleY     = delta;
            panel.Arrow_Bottom_B_Scale.ScaleY = delta;

            delta = panel.Image_Pic.Height / newValue * 2;
            foreach (var showText in panel.mUsedTextBlockList)
            {
                var scaleTransform = showText.RenderTransform as ScaleTransform;
                scaleTransform.ScaleY = delta;
            }
        }