Exemplo n.º 1
0
        public void SetImage(Bitmap src)
        {
            bool preserveZoom = MainForm.PanZoomSettings != null;

            //(this.image != null && this.image.Width == src.Width && this.image.Height == src.Height);

            this.image.DisposeSafely();
            this.image = src.To32bppBitmap();

            if (!preserveZoom)
            {
                var settings = new PanZoomSettings()
                {
                    initialImageX = 0,
                    initialImageY = 0,
                    imageX        = 0,
                    imageY        = 0,
                    zoomLevel     = 0,
                    maxZoomLevel  = 100.0D,
                    minZoomLevel  = 0.0D,
                };

                using (var padlock = AsyncDuplicateLock.Get.Lock(this.image))
                {
                    double wRatio = (double)Width / src.Width;
                    double hRatio = (double)Height / src.Height;
                    if (hRatio < wRatio)
                    {
                        settings.zoomLevel = hRatio;
                        settings.imageX    = (Width - (int)(src.Width * hRatio)) / 2;
                    }
                    else
                    {
                        settings.zoomLevel = wRatio;
                        settings.imageY    = (Height - (int)(src.Height * wRatio)) / 2;
                    }
                    int numICareAbout = Math.Max(image.Width, image.Height);
                    settings.minZoomLevel = (100.0D / numICareAbout);
                    if (settings.minZoomLevel > 1.0D)
                    {
                        settings.minZoomLevel = 1.0D;
                    }
                }

                MainForm.PanZoomSettings = settings;
            }

            Refresh();
        }
Exemplo n.º 2
0
        public void SetBluePrint(BlueprintPA src, Bitmap renderedImage, int?textureSize)
        {
            this.image = src;

            #region Calculate size
            this.CalculatedTextureSize = textureSize ?? Constants.TextureSize;
            this.renderedImage.DisposeSafely();
            this.renderedImage = renderedImage;
            #endregion

            bool preserveZoom = (MainForm.PanZoomSettings != null);
            if (!preserveZoom)
            {
                var settings = new PanZoomSettings()
                {
                    initialImageX = 0,
                    initialImageY = 0,
                    imageX        = 0,
                    imageY        = 0,
                    zoomLevel     = 0,
                    maxZoomLevel  = 100.0D,
                    minZoomLevel  = 0.0D,
                };

                bool isv     = true;
                int  mWidth  = src.Mapper.GetXLength(isv);
                int  mHeight = isv ? src.Mapper.GetYLength(isv) : src.Mapper.GetZLength(isv);

                double wRatio = (double)Width / mWidth;
                double hRatio = (double)Height / mHeight;
                if (hRatio < wRatio)
                {
                    settings.zoomLevel = hRatio;
                    settings.imageX    = (Width - (int)(mWidth * hRatio)) / 2;
                }
                else
                {
                    settings.zoomLevel = wRatio;
                    settings.imageY    = (Height - (int)(mHeight * wRatio)) / 2;
                }

                int numICareAbout = Math.Max(mWidth, mHeight);
                settings.minZoomLevel = (100.0D / numICareAbout);
                if (settings.minZoomLevel > 1.0D)
                {
                    settings.minZoomLevel = 1.0D;
                }

                MainForm.PanZoomSettings = settings;
            }

            //renderedImage.DisposeSafely();
            //renderedImage = null;
            Refresh();

            //var rndrWorker = BackgroundWorkerHelper.CreateWorker("RenderedImagePanel_RenderBitmap",
            //    (object sender, DoWorkEventArgs workArgs) => {
            //        var worker = sender as BackgroundWorker;
            //        RenderBitmap(worker);
            //    }, (object sender, RunWorkerCompletedEventArgs args) => {
            //        Refresh();
            //    });
        }