C# 常用功能

来源:互联网 发布:网络协议为什么要分层 编辑:程序博客网 时间:2024/05/22 09:44

*********************************** 图像打印**************************************************start

 private Bitmap BmpPrint = null;

private void WindowLoaded(object sender, EventArgs e)

{

  foreach (String strPrinter in PrinterSettings.InstalledPrinters)
            {
                cmb_printers.Items.Add(strPrinter);
                if (strPrinter == strDefaultPrinter)//把默认打印机设为缺省值
                {
                    cmb_printers.SelectedIndex = cmb_printers.Items.IndexOf(strPrinter);
                }

            }

 

}

 private void btn_PrintBmp_Click(object sender, RoutedEventArgs e)
        {

            if (string.IsNullOrEmpty(this.cmb_printers.Text.Trim().ToString())) return;

             System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
            pd.PrinterSettings.PrinterName = this.cmb_printers.Text.Trim();


                    string str_ko = “D:\\1.bmp”               

            

                   if (File.Exists(str_ko))
                    {
                        BmpPrint = new Bitmap(str_ko);

                         //横打
                        if (koBmpPrint.Width > koBmpPrint.Height)
                        {
                            pd.DefaultPageSettings.Landscape = true;
                        }
                        else//竖打
                        {
                            pd.DefaultPageSettings.Landscape = false;
                        }
                        pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(pd_PrintPage);
                        pd.Print();
                        koBmpPrint.Dispose();
                        
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.StackTrace + ex.Message);
                throw;
            }

        }

 

 /// <summary>
        /// 图片自适应/原始居中输出至A4纸张
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void pd_PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.DrawImage(koBmpPrint, e.Graphics.VisibleClipBounds);//可见剪辑区域的边框
        }

*********************************** 图像打印**************************************************end