Inheritance: NAPS2.Scan.Images.Transforms.Transform
示例#1
0
文件: FRotate.cs 项目: lapuinka/naps2
        public FRotate(ChangeTracker changeTracker)
        {
            this.changeTracker = changeTracker;
            InitializeComponent();

            RotationTransform = new RotationTransform();
        }
示例#2
0
文件: FRotate.cs 项目: cyanfish/naps2
        public FRotate(ChangeTracker changeTracker, ThumbnailRenderer thumbnailRenderer)
        {
            this.changeTracker = changeTracker;
            this.thumbnailRenderer = thumbnailRenderer;
            InitializeComponent();

            RotationTransform = new RotationTransform();
        }
示例#3
0
        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;
        }
示例#4
0
文件: FRotate.cs 项目: lapuinka/naps2
 private void btnRevert_Click(object sender, EventArgs e)
 {
     RotationTransform = new RotationTransform();
     tbAngle.Value = 0;
     txtAngle.Text = (tbAngle.Value / 10.0).ToString("G");
     UpdatePreviewBox();
 }