C# 调用打印机打印图片

2016-10-19 07:34:44来源:CSDN作者:qq_22033759人点击

第七城市

是基于WPF的。
具体代码如下,打印时会有一个小弹窗一闪而过,还在继续找办法改进
由于目前使用的方法所需的变量类型和程序里需要打印的图片的变量类型不一样,所以这里我将需要打印的照片先保存为文件,然后再读取进来。

 private void button4_Click(object sender, RoutedEventArgs e)        {            MainBitmap = (BitmapImage)image.Source;            JpegBitmapEncoder encoder = new JpegBitmapEncoder();            encoder.Frames.Add(BitmapFrame.Create(MainBitmap));            FileStream files = new FileStream("1.jpg", FileMode.Create, FileAccess.ReadWrite);            encoder.Save(files);            files.Close();            PrintDocument pd = new PrintDocument();            pd.DefaultPageSettings.PrinterSettings.PrinterName = "Canon SELPHY CP1200";            PaperSize psize = new PaperSize();            foreach (PaperSize i in pd.PrinterSettings.PaperSizes)            {                if (i.PaperName == "P 无边距 100x148mm 4x6/"") //无边距可正常居中,有边距0,0点位置需考虑边距                {                    psize = i;                    break;                }                Console.WriteLine(i.PaperName);            }            pd.DefaultPageSettings.PaperSize = psize;            pd.PrintPage += (s, args) =>            {                System.Drawing.Image i = System.Drawing.Image.FromFile("1.jpg");                System.Drawing.Rectangle m = args.PageBounds;                if (i.Width < i.Height)                    i.RotateFlip(RotateFlipType.Rotate90FlipNone);                if (i.Width >= i.Height)                {                    if ((double)i.Width / (double)i.Height <= (double)m.Width / (double)m.Height)                    {                        int w = (int)((double)i.Width / (double)i.Height * (double)m.Height);                        int dx = (m.Width - w) / 2;                        m.X = dx;                        m.Y = 0;                        m.Width = w;                    }                    else                    {                        int h = (int)((double)i.Height / (double)i.Width * (double)m.Width);                        int dy = (m.Height - h) / 2;                        m.X = 0;                        m.Y = dy;                        m.Height = h;                    }                }                args.Graphics.DrawImage(i, m);            };            pd.Print();        }
第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台