VB.net importar archivo DXF
¿Importaciones?System.Drawing
¿Público?Clase?PreViewDWG
¿Privado?Estructura?BITMAPFILEHEADER
¿Oscuro? bfType?As?Short
Dim?bfSize?As?Integer
Dim?bfReserved1?As?Short
Dim?bfReserved2?As?Short
¿Dim?bfOffBits?As?Integer
¿Público?Clase?PreViewDWG
¿Privado?Estructura?BITMAPFILEHEADER
¿Privado?Estructura?Entero
Estructura.final
Función.pública?GetDwgImage(ByVal?FileName?As?String)?As?Image
¿Si?Not?File.Exists(FileName)? Luego salga de la función
Dim?DwgF?As?FileStream'Flujo de archivos
Dim?PosSentinel?As?Integer?'La ubicación del bloque de descripción del archivo
¿Dim?Br?As?BinaryReader?Leer archivos binarios
¿Dim?TypePreview?As?Integer?'Formato de miniatura
Dim?PosBMP?As?Integer?'Posición de miniatura
p>p>
¿Dim?LenBMP?As?Integer?'Tamaño de miniatura
Dim?biBitCount?As?Short?'Profundidad de bits de miniatura
Dim?biH ?Como? BITMAPFILEHEADER?'Encabezado del archivo BMP, el archivo DWG no contiene encabezado de archivo de mapa de bits, debe agregarlo usted mismo
Dim?BMPInfo()?As?Byte?'Cuerpo del archivo BMP incluido en el archivo DWG
¿Dim?BMPInfo()?As?Byte?'El cuerpo del archivo BMP contenido en el archivo DWG
¿Dim?El cuerpo del archivo BMP contenido en el archivo DWG
¿BMPF?As?New?MemoryStream?' flujo de archivo de memoria de mapa de bits
¿Dim?bmpr?As?New?BinaryWriter(BMPF)?Escribir clase de archivo binario
Dim?myImg ?Como?Imagen
Pruebe
DwgF?=?New?FileStream(FileName,?FileMode.Open,?FileAccess.Read)'FileStream
br? =?New?BinaryReader(DwgF)
DwgF.Seek(13,?SeekOrigin.Begin)?Leer desde el byte 13
PosSentinel?=?br.ReadInt32 ?'Bytes 13 a 17 representa la ubicación del bloque de descripción de miniaturas
DwgF.Seek(PosSentinel? ?30, ?SeekOrigin.Begin)?Mueva el puntero al byte 31 del bloque de descripción de miniaturas
TipoPre
view?=?br.ReadByte?'El byte 31 es la información del formato de miniatura, 2 representa el formato BMP, 3 representa el formato WMF
¿Seleccionar?Case?TypePreview?
¿Caso 1?
Case?2,?3
PosBMP?=?br.ReadInt32?' La ubicación del mapa de bits guardado en el archivo DWG
LenBMP?=? br.ReadInt32?'El tamaño del mapa de bits
DwgF.Seek(PosBMP? ?14, ?SeekOrigin. Begin)? Mueva el puntero al bloque de mapa de bits
biBitCount?=?br.ReadInt16?'Lea la profundidad de bits
DwgF.Seek(PosBMP,?SeekOrigin.Begin)? Leer todo el contenido del mapa de bits al principio Alternate
BMPInfo?=?br.ReadBytes(LenBMP)?Información del mapa de bits sin encabezado de archivo
br.Close()
DwgF.Close()
Con?biH?'Crear encabezado de archivo de mapa de bits
.bfType?=? amp;H4D42
If?biBitCount ?lt; ?9?Entonces?.bfSize?=?54? ?4?*?(2?^?biBitCount)? ?LenBMP?De lo contrario?.bfSize?=?54? ?0?'Bytes reservados
.bfReserved2?=?0?'Bytes reservados
.bfOffBits?=?14?amp;?1024? /p>
Fin
'Comience a escribir el encabezado del archivo de mapa de bits a continuación
bmpr.Write(biH.bfType)?Tipo de archivo
p>
bmpr.Write(biH.bfSize)?Tamaño del archivo
bmpr.Write(biH.bfReserved1)?0
bmpr.Write(biH.bfReserved2)?0
bmpr.Write(biH.bfOffBits)?Compensación de datos de imagen
bmpr.Write(BMPInfo)?Escribir mapa de bits
BMPF.Seek(0 ,?SeekOrigin.Begin) ?Mover el puntero al principio del archivo
myImg?=?Image.FromStream(BMPF)?' Crear un objeto de archivo de mapa de bits