C 預覽 GOCAD DWG檔案方法

2022-04-06 02:31:55 字數 2877 閱讀 8563

c#讀取dwg檔案方法(一)直接讀取檔案結構

struct

bitmapfileheader

public

static system.drawing.image getdwgimage(string

filename)

filestream dwgf=null; //

檔案流int possentinel; //

檔案描述塊的位置

binaryreader br=null; //

讀取二進位制檔案

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); //

寫二進位制檔案類

system.drawing.image myimg = null

;

try

else

if (typepreview == 2 || typepreview == 3

)

else

bih.bfreserved1 = 0; //

保留位元組

bih.bfreserved2 = 0; //

保留位元組

bih.bfoffbits = 14 + 40 + 1024; //

影象資料偏移

//以下開始寫入位**件頭

bmpr.write(bih.bftype); //

檔案型別

bmpr.write(bih.bfsize); //

檔案大小

bmpr.write(bih.bfreserved1); //

0 bmpr.write(bih.bfreserved2); //

0 bmpr.write(bih.bfoffbits); //

影象資料偏移

bmpr.write(bmpinfo); //

寫入位圖

bmpf.seek(0, seekorigin.begin); //

指標移到檔案開始處

myimg = system.drawing.image.fromstream(bmpf); //

建立位**件物件

bmpr.close();

bmpf.close();

}return

myimg;

}catch

(endofstreamexception)

catch

(ioexception ex)

else

if (ex.message == "

檔案「" + filename + "

」正由另一程序使用,因此該程序無法訪問該檔案。")

else

}catch

(exception ex)

finally

if (br != null

)

bmpr.close();

bmpf.close();}}

讀取出來的背景色為白色,效果比較差,很多顏色顯示不出來,當時認為顯示dwg檔案出錯誤了,問了些高手,(呵呵,別人告訴自己本身取出的就是白色背景,需要自己改變背景色,在此鄙視一下自己)所以繼續用c#操作返回的image物件,改變背景色

//////

顯示dwg檔案

/// ///

要顯示的寬度

///要顯示的高度

///public

static system.drawing.image showdwg(int pwidth,int pheight,string

filepath)

newbitmap.setpixel(x, y, color.fromargb(r, g, b));}}

bitmap bt = new

bitmap(newbitmap, pwidth, pheight);

return

newbitmap;

}

c#預覽dwg檔案方法(二)dwgthumbnail 控制項

c#預覽dwg檔案方法(三)dwgtrueview

下圖是dwgtrueview控制項和dwgthumbnail控制項顯示的區別

dwgtrueview控制項完全就是autocad的乙個唯讀微型版本,相對速度必然會慢一些!

c#預覽dwg檔案方法(四)ddvue 控制項

delphi時期乙個非著名的控制項

用法不多說,和前面幾個幾乎一樣!

PDF預覽 pdfJS預覽pdf檔案

方式1 檔案流轉為blob let urlsrc window.url.createobjecturl blob this src urlsrc pdf空白頁 else 正確解析了頁碼,但是每頁空白。解決方法 responsetype blob html visible.sync dialo isi...

C 列印預覽

截圖 本來想用.net提供的列印預覽對話方塊,可終究不如自己寫的用起來方便,比如說新增滑鼠和滾輪支援。在.net環境下實現列印和預覽還是蠻簡單的。需要用到的類是printdocument和printpreviewcontrol printdocument是要列印的文件,printpreviewcon...

c 列印預覽

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...