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(); }
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(); // }); }