C#打印图片文件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PrintImage
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
        //打印字符串用
            SolidBrush brush = new SolidBrush(System.Drawing.Color.Black);
            Font DrawFont = new Font("Arial", 22);

            PrintDocument pd = new PrintDocument();
            pd.PrintPage += PicturePrintDocument_PrintPage; //注册打印事件
            //pd.PrinterSettings.PrinterName = "HP LaserJet Professional M1213nf MFP";        //打印机选择,使用默认打印机不需要设置
            pd.Print();

        }

        private void PicturePrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
        //打开文件
            FileStream fs = File.OpenRead("test.jpg"); //OpenRead
          //转换为BYTE
            int filelength = 0;
            filelength = (int)fs.Length; //获得文件长度 
            Byte[] imageByte = new Byte[filelength]; //建立一个字节数组 
            fs.Read(imageByte, 0, filelength); //按字节流读取 
            //转换为 IMAGE
            System.Drawing.Image image = System.Drawing.Image.FromStream(fs);
            fs.Close();
            
            e.Graphics.DrawImage(image, 0, 0);  //img大小
            //e.Graphics.DrawString(TicCode, DrawFont, brush, 600, 600); //绘制字符串
            e.HasMorePages = false;
        }
    }
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C# ObjectARX中,你可以使用Autodesk.AutoCAD.DatabaseServices.Viewport类来获取视口对象,然后使用其中的边界框(BoundingBox)属性来获取视口的范围。接着,你可以将这个范围传递给Autodesk.AutoCAD.GraphicsSystem.ViewportExtensions.CaptureImage方法,该方法将返回一个System.Drawing.Image对象,代表你要输出的图片。 下面是一个简单的示例代码,它演示了如何在C# ObjectARX中根据视口范围打印输出图片: ```csharp using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.GraphicsSystem; using Autodesk.AutoCAD.Runtime; using System.Drawing; using System.IO; namespace MyCommands { public class MyCommands { [CommandMethod("PRINTIMAGE")] public static void PrintImage() { // 获取当前文档和编辑器对象 Document doc = Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; // 提示用户选择一个视口 PromptEntityOptions opts = new PromptEntityOptions("\n选择一个视口:"); opts.SetRejectMessage("\n请选择一个有效的视口!"); opts.AddAllowedClass(typeof(Viewport), true); PromptEntityResult res = ed.GetEntity(opts); if (res.Status == PromptStatus.OK) { // 获取视口对象 Viewport vp = res.ObjectId.GetObject(OpenMode.ForRead) as Viewport; // 获取视口范围 Point3d minPt = vp.GeTViewExtentsCorner(ViewportCorner.LowerLeft); Point3d maxPt = vp.GeTViewExtentsCorner(ViewportCorner.UpperRight); Extents3d ext = new Extents3d(minPt, maxPt); // 获取视口截图 Image img = vp.CaptureImage(ext); // 保存截图到磁盘上 string filePath = Path.Combine(doc.Database.Filename, "output.png"); img.Save(filePath, System.Drawing.Imaging.ImageFormat.Png); // 显示输出文件路径 ed.WriteMessage("\n输出文件路径:" + filePath); } } } } ``` 以上代码演示了如何在C# ObjectARX中根据选择的视口范围,将视口内容输出为一张PNG格式的图片,并将其保存到磁盘上。你可以根据自己的需要进行修改和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值