C#按物理尺寸打印图片 e.Graphics.DrawImage(image,0,0); //按物理尺寸打印
2021/9/18 11:34:45
本文主要是介绍C#按物理尺寸打印图片 e.Graphics.DrawImage(image,0,0); //按物理尺寸打印,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
using System; using System.Collections; using System.Collections.Generic; using System.Drawing; using System.Drawing.Printing; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; namespace SYS_TEST.BaseClass { /// <summary> /// 图片直接打印方法 /// </summary> public class PrintDirectClass { public const int PRINT_INIT = 0; public const int PRINT_FINISH= 1; public const int PRINT_CANCE = 2; public const int PRINT_ERROR = 3; public const int PRINTING = 4; public int result = PRINT_INIT; //打印结果 private int printNum = 0;//多页打印 public Image image = null; public string imageFile = "";//单个图片文件 //private ArrayList fileList = new ArrayList();//多个图片文件 public PrintDirectClass(Image image) { this.image = image; PrintPreview(); } public PrintDirectClass(string imageFile) { this.imageFile = imageFile; PrintPreview(); } public void PrintPreview() { PrintDocument docToPrint = new PrintDocument(); docToPrint.BeginPrint += new System.Drawing.Printing.PrintEventHandler(this.docToPrint_BeginPrint); docToPrint.EndPrint += new System.Drawing.Printing.PrintEventHandler(this.docToPrint_EndPrint); docToPrint.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.docToPrint_PrintPage); docToPrint.DefaultPageSettings.Landscape = false; PrintDialog printDialog = new PrintDialog(); printDialog.AllowSomePages = true; printDialog.ShowHelp = true; printDialog.Document = docToPrint; //if (printDialog.ShowDialog() == DialogResult.OK) //{ docToPrint.Print(); //} //else //{ // result=PRINT_CANCE; //} } private void docToPrint_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) { result=PRINTING; //if (fileList.Count == 0) // fileList.Add(imageFile); } private void docToPrint_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e) { result=PRINT_FINISH; } private void docToPrint_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { try { //图片抗锯齿 //e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; if (this.image == null) { //Stream fs = new FileStream(fileList[i].Trim(), FileMode.Open, FileAccess.Read); Stream fs = new FileStream(imageFile.Trim(), FileMode.Open, FileAccess.Read); System.Drawing.Image image = System.Drawing.Image.FromStream(fs); } //int x = e.MarginBounds.X; //int y = e.MarginBounds.Y; e.Graphics.DrawImage(image,0,0); //按物理尺寸打印 //int width = image.Width; //int height = image.Height; if ((width / e.MarginBounds.Width) > (height / e.MarginBounds.Height)) { width = e.MarginBounds.Width; height = image.Height * e.MarginBounds.Width / image.Width; } else { height = e.MarginBounds.Height; width = image.Width * e.MarginBounds.Height / image.Height; } DrawImage参数根据打印机和图片大小自行调整 //System.Drawing.Rectangle destRect = new System.Drawing.Rectangle(x, y, width, height); //e.Graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, System.Drawing.GraphicsUnit.Point); //System.Drawing.Rectangle destRect = new System.Drawing.Rectangle(x, y, width, height); //System.Drawing.Rectangle destRect = new System.Drawing.Rectangle(0, 0, width, height); //if (image.Height < 310) //{ // e.Graphics.DrawImage(image, 0, 30, image.Width + 20, image.Height); // // System.Drawing.Rectangle destRect1 = new System.Drawing.Rectangle(0, 30, image.Width, image.Height); // // e.Graphics.DrawImage(image, destRect1, 0, 0, image.Width, image.Height, System.Drawing.GraphicsUnit.Pixel); //} //else //{ // e.Graphics.DrawImage(image, 0, 0, image.Width + 20, image.Height); // // System.Drawing.Rectangle destRect2 = new System.Drawing.Rectangle(0, 0, image.Width, image.Height); // // e.Graphics.DrawImage(image, destRect2, 0, 0, image.Width, image.Height, System.Drawing.GraphicsUnit.Pixel); //} //if (printNum < fileList.Count - 1) //{ // printNum++; // e.HasMorePages = true;//HasMorePages为true则再次运行PrintPage事件 // return; //} e.HasMorePages = false; } catch (Exception ex) { result = PRINT_ERROR; } } } }
这篇关于C#按物理尺寸打印图片 e.Graphics.DrawImage(image,0,0); //按物理尺寸打印的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具