mirror of
https://github.com/ShareX/ShareX.git
synced 2024-07-01 04:30:49 +12:00
Preview image of image effects form now gonna be generated automatically to scale with picture box size
This commit is contained in:
parent
fbcea5a755
commit
5d2e1d098d
|
@ -37,8 +37,8 @@ public partial class ImageEffectsForm : Form
|
|||
{
|
||||
public event Action<Image> ImageProcessRequested;
|
||||
|
||||
public Image DefaultImage { get; private set; }
|
||||
|
||||
public bool AutoGeneratePreviewImage { get; set; }
|
||||
public Image PreviewImage { get; private set; }
|
||||
public List<ImageEffectPreset> Presets { get; private set; }
|
||||
public int SelectedPresetIndex { get; private set; }
|
||||
|
||||
|
@ -50,12 +50,18 @@ public ImageEffectsForm(Image img, List<ImageEffectPreset> presets, int selected
|
|||
InitializeComponent();
|
||||
ShareXResources.ApplyTheme(this);
|
||||
|
||||
DefaultImage = img;
|
||||
PreviewImage = img;
|
||||
if (PreviewImage == null)
|
||||
{
|
||||
AutoGeneratePreviewImage = true;
|
||||
}
|
||||
|
||||
Presets = presets;
|
||||
if (Presets.Count == 0)
|
||||
{
|
||||
Presets.Add(new ImageEffectPreset());
|
||||
}
|
||||
|
||||
SelectedPresetIndex = selectedPresetIndex;
|
||||
eiImageEffects.ObjectType = typeof(ImageEffectPreset);
|
||||
AddAllEffectsToContextMenu();
|
||||
|
@ -206,27 +212,35 @@ private void UpdatePreview()
|
|||
{
|
||||
ImageEffectPreset preset = GetSelectedPreset();
|
||||
|
||||
if (preset != null && DefaultImage != null)
|
||||
if (preset != null)
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
try
|
||||
{
|
||||
Stopwatch timer = Stopwatch.StartNew();
|
||||
|
||||
using (Image preview = ApplyEffects())
|
||||
if (AutoGeneratePreviewImage)
|
||||
{
|
||||
if (preview != null)
|
||||
GeneratePreviewImage(25);
|
||||
}
|
||||
|
||||
if (PreviewImage != null)
|
||||
{
|
||||
Stopwatch timer = Stopwatch.StartNew();
|
||||
|
||||
using (Image preview = ApplyEffects())
|
||||
{
|
||||
pbResult.LoadImage(preview);
|
||||
Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms,
|
||||
preview.Width, preview.Height, timer.ElapsedMilliseconds);
|
||||
}
|
||||
else
|
||||
{
|
||||
pbResult.Reset();
|
||||
Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms,
|
||||
0, 0, timer.ElapsedMilliseconds);
|
||||
if (preview != null)
|
||||
{
|
||||
pbResult.LoadImage(preview);
|
||||
Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms,
|
||||
preview.Width, preview.Height, timer.ElapsedMilliseconds);
|
||||
}
|
||||
else
|
||||
{
|
||||
pbResult.Reset();
|
||||
Text = string.Format("ShareX - " + Resources.ImageEffectsForm_UpdatePreview_Image_effects___Width___0___Height___1___Render_time___2__ms,
|
||||
0, 0, timer.ElapsedMilliseconds);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -247,13 +261,50 @@ private void UpdateControlStates()
|
|||
btnClear.Enabled = lvEffects.Items.Count > 0;
|
||||
}
|
||||
|
||||
private void GeneratePreviewImage(int padding)
|
||||
{
|
||||
if (pbResult.ClientSize.Width > 0 && pbResult.ClientSize.Height > 0)
|
||||
{
|
||||
int horizontalPadding = padding, verticalPadding = padding;
|
||||
int minSizePadding = 300;
|
||||
|
||||
if (pbResult.ClientSize.Width < (horizontalPadding * 2) + minSizePadding)
|
||||
{
|
||||
horizontalPadding = 0;
|
||||
}
|
||||
|
||||
if (pbResult.ClientSize.Height < (verticalPadding * 2) + minSizePadding)
|
||||
{
|
||||
verticalPadding = 0;
|
||||
}
|
||||
|
||||
using (Bitmap bmp = new Bitmap(pbResult.ClientSize.Width - (horizontalPadding * 2), pbResult.ClientSize.Height - (verticalPadding * 2)))
|
||||
{
|
||||
if (PreviewImage != null) PreviewImage.Dispose();
|
||||
|
||||
Color backgroundColor;
|
||||
|
||||
if (ShareXResources.UseDarkTheme)
|
||||
{
|
||||
backgroundColor = ShareXResources.Theme.BackgroundColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
backgroundColor = Color.DarkGray;
|
||||
}
|
||||
|
||||
PreviewImage = ImageHelpers.FillBackground(bmp, backgroundColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Image ApplyEffects()
|
||||
{
|
||||
ImageEffectPreset preset = GetSelectedPreset();
|
||||
|
||||
if (preset != null)
|
||||
{
|
||||
return preset.ApplyEffects(DefaultImage);
|
||||
return preset.ApplyEffects(PreviewImage);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -541,8 +592,8 @@ private void tsmiLoadImageFromFile_Click(object sender, EventArgs e)
|
|||
|
||||
if (!string.IsNullOrEmpty(filePath))
|
||||
{
|
||||
if (DefaultImage != null) DefaultImage.Dispose();
|
||||
DefaultImage = ImageHelpers.LoadImage(filePath);
|
||||
if (PreviewImage != null) PreviewImage.Dispose();
|
||||
PreviewImage = ImageHelpers.LoadImage(filePath);
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
@ -553,15 +604,15 @@ private void tsmiLoadImageFromClipboard_Click(object sender, EventArgs e)
|
|||
|
||||
if (img != null)
|
||||
{
|
||||
if (DefaultImage != null) DefaultImage.Dispose();
|
||||
DefaultImage = img;
|
||||
if (PreviewImage != null) PreviewImage.Dispose();
|
||||
PreviewImage = img;
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
||||
private void btnSaveImage_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (DefaultImage != null)
|
||||
if (PreviewImage != null)
|
||||
{
|
||||
using (Image img = ApplyEffects())
|
||||
{
|
||||
|
@ -575,7 +626,7 @@ private void btnSaveImage_Click(object sender, EventArgs e)
|
|||
|
||||
private void btnUploadImage_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (DefaultImage != null)
|
||||
if (PreviewImage != null)
|
||||
{
|
||||
Image img = ApplyEffects();
|
||||
|
||||
|
@ -608,8 +659,8 @@ private void pbResult_DragDrop(object sender, DragEventArgs e)
|
|||
{
|
||||
if (Helpers.IsImageFile(files[0]))
|
||||
{
|
||||
if (DefaultImage != null) DefaultImage.Dispose();
|
||||
DefaultImage = ImageHelpers.LoadImage(files[0]);
|
||||
if (PreviewImage != null) PreviewImage.Dispose();
|
||||
PreviewImage = ImageHelpers.LoadImage(files[0]);
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
@ -620,8 +671,8 @@ private void pbResult_DragDrop(object sender, DragEventArgs e)
|
|||
|
||||
if (img != null)
|
||||
{
|
||||
if (DefaultImage != null) DefaultImage.Dispose();
|
||||
DefaultImage = img;
|
||||
if (PreviewImage != null) PreviewImage.Dispose();
|
||||
PreviewImage = img;
|
||||
UpdatePreview();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -782,7 +782,7 @@ private void chkShowImageEffectsWindowAfterCapture_CheckedChanged(object sender,
|
|||
|
||||
private void btnImageEffects_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (ImageEffectsForm imageEffectsForm = new ImageEffectsForm(ShareXResources.LogoBlack, TaskSettings.ImageSettings.ImageEffectPresets,
|
||||
using (ImageEffectsForm imageEffectsForm = new ImageEffectsForm(null, TaskSettings.ImageSettings.ImageEffectPresets,
|
||||
TaskSettings.ImageSettings.SelectedImageEffectPreset))
|
||||
{
|
||||
imageEffectsForm.ShowDialog();
|
||||
|
|
Loading…
Reference in a new issue