當前位置:編程學習大全網 - 編程語言 - VB2010版中怎麽用用OLE控件連接CAD軟件,顯示CAD圖形?會的給段代碼

VB2010版中怎麽用用OLE控件連接CAD軟件,顯示CAD圖形?會的給段代碼

vb2010(vb.net)貌似已經沒有OLE控件

下面的代碼是用PictureBox控件顯示CAD的DWG文件

?Private?Structure?BITMAPFILEHEADER

Dim?bfType?As?Short

Dim?bfSize?As?Integer

Dim?bfReserved1?As?Short

Dim?bfReserved2?As?Short

Dim?bfOffBits?As?Integer

End?StructurePublic?Function?GetDwgImage(ByVal?FileName?As?String)?As?Image

If?Not?File.Exists(FileName)?Then?Exit?Function

Dim?DwgF?As?FileStream'文件流

Dim?PosSentinel?As?Integer?'文件描述塊的位置

Dim?br?As?BinaryReader?'讀取二進制文件

Dim?TypePreview?As?Integer?'縮略圖格式

Dim?PosBMP?As?Integer?'縮略圖位置

Dim?LenBMP?As?Integer?'縮略圖大小

Dim?biBitCount?As?Short?'縮略圖比特深度

Dim?biH?As?BITMAPFILEHEADER?'BMP文件頭,DWG文件中不包含位圖文件頭,要自行加上去

Dim?BMPInfo()?As?Byte?'包含在DWG文件中的BMP文件體

Dim?BMPF?As?New?MemoryStream?'保存位圖的內存文件流

Dim?bmpr?As?New?BinaryWriter(BMPF)?'寫二進制文件類

Dim?myImg?As?Image

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格式

Select?Case?TypePreview

Case?1Case?2,?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()

With?biH?'建立位圖文件頭

.bfType?=?&H4D42

If?biBitCount?<?9?Then?.bfSize?=?54?+?4?*?(2?^?biBitCount)?+?LenBMP?Else?.bfSize?=?54?+?LenBMP

.bfReserved1?=?0?'保留字節

.bfReserved2?=?0?'保留字節

.bfOffBits?=?14?+?&H28?+?1024?'圖像數據偏移

End?With

'以下開始寫入位圖文件頭

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?=?Image.FromStream(BMPF)?'創建位圖文件對象

Return?myImg

bmpr.Close()

BMPF.Close()

End?Select

Catch?ex?As?Exception

Return?Nothing

End?Try?

End?Function

  • 上一篇:《VB多分支選擇結構的運用》教學案例
  • 下一篇:教育教學案例分析100例
  • copyright 2024編程學習大全網