/// <summary> /// Dispose of the CurrentBitmap and replace it with the given bitmap. /// </summary> /// <param name="bmp">The new bitmap.</param> public void ReplaceBitmap(Bitmap bmp) { if (CurrentBitmap != null) { CurrentBitmap.Dispose(); } CurrentBitmap = IMAGE.ProperCast(bmp, this.Format); }
/// <summary> /// Sets the CurrentBitmap and does not dispose of the last bitmap. /// </summary> /// <param name="bmp">The new bitmap.</param> public void UpdateBitmapReferance(Bitmap bmp) { CurrentBitmap = IMAGE.ProperCast(bmp, this.Format); }
public ClipForm(ClipOptions options, Image image) { SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true); InitializeComponent(); SuspendLayout(); Options = options; ClipName = Options.Name; _ChangeTracker = new BitmapUndo(IMAGE.ProperCast(image, InternalSettings.Default_Image_Format)); _AspectRatio = image.Width / (double)image.Height; StartWindowSize = new Size( image.Width + (Options.BorderThickness << 1), image.Height + (Options.BorderThickness << 1)); _ZoomControlSize = new Size( (int)Math.Round(StartWindowSize.Width * SettingsManager.ClipSettings.Zoom_Size_From_Percent), (int)Math.Round(StartWindowSize.Height * SettingsManager.ClipSettings.Zoom_Size_From_Percent)); MinimumSize = StartWindowSize; MaximumSize = StartWindowSize; Bounds = new Rectangle(options.Location, StartWindowSize); BackColor = Options.Color; zdbZoomedImageDisplay.Enabled = false; zdbZoomedImageDisplay.borderColor = SettingsManager.ClipSettings.Border_Color; zdbZoomedImageDisplay.replaceTransparent = SettingsManager.ClipSettings.Zoom_Color; if (SettingsManager.ClipSettings.Zoom_Size_From_Percent == 1f) { zdbZoomedImageDisplay.BorderThickness = 0; } else { zdbZoomedImageDisplay.BorderThickness = SettingsManager.ClipSettings.Zoom_Border_Thickness; } MouseDown += MouseDown_Event; MouseUp += MouseUp_Event; MouseMove += MouseMove_Event; ResizeEnd += ResizeEnded; KeyDown += FormKeyDown; MouseWheel += ClipForm_MouseWheel; base.PreventHide = SettingsManager.ClipSettings.Never_Hide_Clips; base.RegisterEvents(); #region context menu cmMain.Opening += CmMain_Opening; tsmiCopyToolStripMenuItem.Click += CopyImage_Click; tsmiAllowResizeToolStripMenuItem.Click += AllowResize_Click; tsmiOCRToolStripMenuItem.Click += OCR_Click; tsmiSaveToolStripMenuItem.Click += Save_Click; tsmiDestroyToolStripMenuItem.Click += Destroy_Click; tsmiDestroyAllClipsToolStripMenuItem.Click += DestroyAllClips_Click; tsmiCopyDefaultContextMenuItem.Click += CopyImage_Click; tsmiCopyZoomScaledContextMenuItem.Click += CopyScaledImage_Click; tsmiCopyZoomedImage.Click += CopyZoomedImage_Click; tsmiOpenInEditor.Click += OpenInEditor_Click; tsmiInvertColor.Click += InvertColor_Click; tsmiConvertToGray.Click += ConvertToGray_Click; tsmiRotateLeft.Click += RotateLeft_Click; tsmiRotateRight.Click += RotateRight_Click; tsmiFlipHorizontal.Click += FlipHorizontal_Click; tsmiFlipVertical.Click += FlipVertical_Click; if (_IsResizable) { tsmiAllowResizeToolStripMenuItem.Checked = true; } #endregion Text = ClipName; ResumeLayout(true); Show(); UpdateTheme(); TopMost = true; //for some reason if the clip is on a display that is scaled it makes it bigger than its supposed to be //so only allow it to be resized after 1000 ms Timer updateMaxSizeTimer = new Timer() { Interval = 1000 }; updateMaxSizeTimer.Tick += UpdateMaxSizeTimerTick_Event; updateMaxSizeTimer.Start(); }