private void UpdatePreviewBox() { if (previewTimer == null) { previewTimer = new Timer((obj) => { if (previewOutOfDate && !working) { working = true; previewOutOfDate = false; var result = RotationTransform.Perform((Bitmap)workingImage.Clone()); try { Invoke(new MethodInvoker(() => { if (pictureBox.Image != null) { pictureBox.Image.Dispose(); } pictureBox.Image = result; })); } catch (ObjectDisposedException) { } working = false; } }, null, 0, 100); } previewOutOfDate = true; }
public async Task RotateFlip(IEnumerable <int> selection, RotateFlipType rotateFlipType) { var images = Images.ElementsAt(selection).ToList(); await Task.Factory.StartNew(() => { foreach (ScannedImage img in images) { lock (img) { var transform = new RotationTransform(rotateFlipType); img.AddTransform(transform); var thumb = img.GetThumbnail(); if (thumb != null) { img.SetThumbnail(transform.Perform(thumb)); } } } }); }