php网站模块,自己开一个培训机构流程,深圳网站建设fantodo,论坛seo设置//C# 读取CAD文件缩略图#xff08;DWG文件#xff09; 杨航收集技术资料#xff0c;分享给大家 //2010-09-04 16:34:58| 分类#xff1a; C# |字号 订阅//在不使用任务插件的情况下读取DWG文件的缩略图#xff0c;以便在没有安装AutoCAD的计算机上浏览。using System;u…//C# 读取CAD文件缩略图DWG文件 杨航收集技术资料分享给大家 //2010-09-04 16:34:58| 分类 C# |字号 订阅//在不使用任务插件的情况下读取DWG文件的缩略图以便在没有安装AutoCAD的计算机上浏览。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;namespace 浏览dwg{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){ViewDWG viewDwg new ViewDWG();pictureBox1.Image viewDwg.GetDwgImage(c:\\1.dwg);}class ViewDWG{struct BITMAPFILEHEADER{public short bfType;public int bfSize;public short bfReserved1;public short bfReserved2;public int bfOffBits;}public Image GetDwgImage(string FileName){if (!(File.Exists(FileName))){throw new FileNotFoundException(文件没有被找到);}FileStream DwgF; //文件流int PosSentinel; //文件描述块的位置BinaryReader br; //读取二进制文件int TypePreview; //缩略图格式int PosBMP; //缩略图位置int LenBMP; //缩略图大小short biBitCount; //缩略图比特深度BITMAPFILEHEADER biH; //BMP文件头DWG文件中不包含位图文件头要自行加上去byte[] BMPInfo; //包含在DWG文件中的BMP文件体MemoryStream BMPF new MemoryStream(); //保存位图的内存文件流BinaryWriter bmpr new BinaryWriter(BMPF); //写二进制文件类Image myImg null;try{DwgF new FileStream(FileName, FileMode.Open, FileAccess.Read); //文件流br new BinaryReader(DwgF);DwgF.Seek(13, SeekOrigin.Begin); //从第十三字节开始读取PosSentinel br.ReadInt32(); //第13到17字节指示缩略图描述块的位置DwgF.Seek(PosSentinel 30, SeekOrigin.Begin); //将指针移到缩略图描述块的第31字节TypePreview br.ReadByte(); //第31字节为缩略图格式信息2 为BMP格式3为WMF格式if (TypePreview 1){}else if (TypePreview 2 || TypePreview 3){PosBMP br.ReadInt32(); //DWG文件保存的位图所在位置LenBMP br.ReadInt32(); //位图的大小DwgF.Seek(PosBMP 14, SeekOrigin.Begin); //移动指针到位图块biBitCount br.ReadInt16(); //读取比特深度DwgF.Seek(PosBMP, SeekOrigin.Begin); //从位图块开始处读取全部位图内容备用BMPInfo br.ReadBytes(LenBMP); //不包含文件头的位图信息br.Close();DwgF.Close();biH.bfType 19778; //建立位图文件头if (biBitCount 9){biH.bfSize 54 4 * (int)(Math.Pow(2, biBitCount)) LenBMP;}else{biH.bfSize 54 LenBMP;}biH.bfReserved1 0; //保留字节biH.bfReserved2 0; //保留字节biH.bfOffBits 14 40 1024; //图像数据偏移//以下开始写入位图文件头bmpr.Write(biH.bfType); //文件类型bmpr.Write(biH.bfSize); //文件大小bmpr.Write(biH.bfReserved1); //0bmpr.Write(biH.bfReserved2); //0bmpr.Write(biH.bfOffBits); //图像数据偏移bmpr.Write(BMPInfo); //写入位图BMPF.Seek(0, SeekOrigin.Begin); //指针移到文件开始处myImg Image.FromStream(BMPF); //创建位图文件对象bmpr.Close();BMPF.Close();}return myImg;}catch (Exception ex){throw new Exception(ex.Message);}}}}}