public FRotate(ChangeTracker changeTracker) { this.changeTracker = changeTracker; InitializeComponent(); RotationTransform = new RotationTransform(); }
public FRotate(ChangeTracker changeTracker, ThumbnailRenderer thumbnailRenderer) { this.changeTracker = changeTracker; this.thumbnailRenderer = thumbnailRenderer; InitializeComponent(); RotationTransform = new RotationTransform(); }
public bool Print(PrinterSettings printerSettings, List<IScannedImage> images, List<IScannedImage> selectedImages) { List<IScannedImage> imagesToPrint; switch (printerSettings.PrintRange) { case PrintRange.AllPages: imagesToPrint = images; break; case PrintRange.Selection: imagesToPrint = selectedImages; break; case PrintRange.SomePages: int start = printerSettings.FromPage - 1; int length = printerSettings.ToPage - start; imagesToPrint = images.Skip(start).Take(length).ToList(); break; default: imagesToPrint = new List<IScannedImage>(); break; } if (imagesToPrint.Count == 0) { return false; } var printDocument = new PrintDocument(); int i = 0; printDocument.PrintPage += (sender, e) => { var image = imagesToPrint[i].GetImage(); try { var pb = e.PageBounds; if (Math.Sign(image.Width - image.Height) != Math.Sign(pb.Width - pb.Height)) { // Flip portrait/landscape to match output image = new RotationTransform(90).Perform(image); } // Fit the image into the output rect while maintaining its aspect ratio var rect = image.Width / pb.Width < image.Height / pb.Height ? new Rectangle(pb.Left, pb.Top, image.Width * pb.Height / image.Height, pb.Height) : new Rectangle(pb.Left, pb.Top, pb.Width, image.Height * pb.Width / image.Width); e.Graphics.DrawImage(image, rect); } finally { image.Dispose(); } e.HasMorePages = (++i < imagesToPrint.Count); }; printDocument.PrinterSettings = printerSettings; printDocument.Print(); return true; }
private void btnRevert_Click(object sender, EventArgs e) { RotationTransform = new RotationTransform(); tbAngle.Value = 0; txtAngle.Text = (tbAngle.Value / 10.0).ToString("G"); UpdatePreviewBox(); }