Accueil > > > CONVERTIR UN WMF EN EMF
CONVERTIR UN WMF EN EMF
Information sur la source
Description
Voici du code que j'ai trouvé sur le net et qui sert, comme le titre l'indique, à convertir un fichier WMF en EMF. Le seul problème c'est que je ne sais pas comment l'utiliser :o( Je fais donc appel à toute personne qui pourrait mettre un projet (qui utilise ce code) dans lequel on sélectionne un fichier WMF, le prog le transforme, et l'enregistre en EMF. Je pense que ce code pourra être utile à certains d'entre vous (et je l'espère). Merci d'avance.
Source
- Private Const MM_ANISOTROPIC = 8
- '...
- Private Type SMALL_RECT
- Left As Integer
- Top As Integer
- Right As Integer
- Bottom As Integer
- End Type
- '...
- Private Type METAHEADER
- mtType As Integer
- mtHeaderSize As Integer
- mtVersion As Integer
- mtSize As Long
- mtNoObjects As Integer
- mtMaxRecord As Long
- mtNoParameters As Integer
- End Type
-
- Private Type APMHEADER
- dwKey As Long
- hMF As Integer
- rcBounds As SMALL_RECT
- wInch As Integer
- dwReserved As Long
- wChecksum As Integer
- End Type
- Private Const SIZEOF_APMHEADER = 22
- Private Const APMHEADER_KEY = &H9AC6CDD7
- '...
- Private Type METAFILEPICT
- mm As Long
- xExt As Long
- yExt As Long
- hMF As Long
- End Type
- '...
- Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
- Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
- Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDC As Long) As Long
- Private Declare Function SetWinMetaFileBits Lib "gdi32" (ByVal cbBuffer As Long, lpbBuffer As Byte, ByVal hdcRef As Long, lpmfp As METAFILEPICT) As Long
- '...
- Private Function OpenAPM(ByVal Path As String) As Long ' Returns an EMF handle
- On Error GoTo Err_OpenAPM
-
- Dim hEmf As Long
- hEmf = 0
-
- Dim hDC As Long
- hDC = 0
-
- Dim lBytes As Long, aBytes() As Byte, lBase
-
- ' TODO: Read the file into aBytes()
- '...
- ' Open the file for binary access
- Dim hFile As Long
-
- Dim Hdra As METAHEADER
- Dim mtSize As Long
- Dim hMF As Long
- hFile = FreeFile
- Dim FileName As String
- FileName = "c:\carte.wmf"
- Open FileName For Binary Access Read As #hFile
-
- ' Scan past APMFILEHEADER (22 bytes), and
- ' grab METAHEADER.
- Get #hFile, 23, Hdra
-
- ' The size field contains number of WORDs
- ' in metafile,we need to double for number
- ' of bytes.
- Hdra.mtSize = Hdra.mtSize * 2
-
- ' Grab actual metafile data. Need to back
- ' up to beginning of header.
- ReDim aBytes(1 To Hdra.mtSize) As Byte
- Get #hFile, 23, aBytes
-
- ' Done with file now.
- Close hFile
-
-
- lBase = LBound(aBytes)
- lBytes = UBound(aBytes) - LBound(aBytes) + 1
-
- Dim Hdr As APMHEADER
- If lBytes >= SIZEOF_APMHEADER Then
- CopyMemory Hdr, aBytes(lBase), SIZEOF_APMHEADER
- End If
- If Hdr.dwKey = APMHEADER_KEY Then
- Dim mfp As METAFILEPICT
- With mfp
- .mm = MM_ANISOTROPIC
- .xExt = Hdr.rcBounds.Right - Hdr.rcBounds.Left
- If .xExt < 0 Then .xExt = -1 * .xExt
- .xExt = (2540 / Hdr.wInch) * .xExt
-
- .yExt = Hdr.rcBounds.Bottom - Hdr.rcBounds.Top
- If .yExt < 0 Then .yExt = -1 * .yExt
- .yExt = (2540 / Hdr.wInch) * .yExt
- End With
-
- hDC = GetDC(0)
- If 0 <> hDC Then
- hEmf = SetWinMetaFileBits(lBytes - SIZEOF_APMHEADER, aBytes(lBase + SIZEOF_APMHEADER), hDC, mfp)
- End If
- End If
-
- OpenAPM = hEmf
- GoTo Exit_OpenAPM
-
- Err_OpenAPM:
- GoTo Exit_OpenAPM
-
- Exit_OpenAPM:
- If (0 <> hDC) Then
- ReleaseDC 0, hDC
- End If
- End Function
Private Const MM_ANISOTROPIC = 8
'...
Private Type SMALL_RECT
Left As Integer
Top As Integer
Right As Integer
Bottom As Integer
End Type
'...
Private Type METAHEADER
mtType As Integer
mtHeaderSize As Integer
mtVersion As Integer
mtSize As Long
mtNoObjects As Integer
mtMaxRecord As Long
mtNoParameters As Integer
End Type
Private Type APMHEADER
dwKey As Long
hMF As Integer
rcBounds As SMALL_RECT
wInch As Integer
dwReserved As Long
wChecksum As Integer
End Type
Private Const SIZEOF_APMHEADER = 22
Private Const APMHEADER_KEY = &H9AC6CDD7
'...
Private Type METAFILEPICT
mm As Long
xExt As Long
yExt As Long
hMF As Long
End Type
'...
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDC As Long) As Long
Private Declare Function SetWinMetaFileBits Lib "gdi32" (ByVal cbBuffer As Long, lpbBuffer As Byte, ByVal hdcRef As Long, lpmfp As METAFILEPICT) As Long
'...
Private Function OpenAPM(ByVal Path As String) As Long ' Returns an EMF handle
On Error GoTo Err_OpenAPM
Dim hEmf As Long
hEmf = 0
Dim hDC As Long
hDC = 0
Dim lBytes As Long, aBytes() As Byte, lBase
' TODO: Read the file into aBytes()
'...
' Open the file for binary access
Dim hFile As Long
Dim Hdra As METAHEADER
Dim mtSize As Long
Dim hMF As Long
hFile = FreeFile
Dim FileName As String
FileName = "c:\carte.wmf"
Open FileName For Binary Access Read As #hFile
' Scan past APMFILEHEADER (22 bytes), and
' grab METAHEADER.
Get #hFile, 23, Hdra
' The size field contains number of WORDs
' in metafile,we need to double for number
' of bytes.
Hdra.mtSize = Hdra.mtSize * 2
' Grab actual metafile data. Need to back
' up to beginning of header.
ReDim aBytes(1 To Hdra.mtSize) As Byte
Get #hFile, 23, aBytes
' Done with file now.
Close hFile
lBase = LBound(aBytes)
lBytes = UBound(aBytes) - LBound(aBytes) + 1
Dim Hdr As APMHEADER
If lBytes >= SIZEOF_APMHEADER Then
CopyMemory Hdr, aBytes(lBase), SIZEOF_APMHEADER
End If
If Hdr.dwKey = APMHEADER_KEY Then
Dim mfp As METAFILEPICT
With mfp
.mm = MM_ANISOTROPIC
.xExt = Hdr.rcBounds.Right - Hdr.rcBounds.Left
If .xExt < 0 Then .xExt = -1 * .xExt
.xExt = (2540 / Hdr.wInch) * .xExt
.yExt = Hdr.rcBounds.Bottom - Hdr.rcBounds.Top
If .yExt < 0 Then .yExt = -1 * .yExt
.yExt = (2540 / Hdr.wInch) * .yExt
End With
hDC = GetDC(0)
If 0 <> hDC Then
hEmf = SetWinMetaFileBits(lBytes - SIZEOF_APMHEADER, aBytes(lBase + SIZEOF_APMHEADER), hDC, mfp)
End If
End If
OpenAPM = hEmf
GoTo Exit_OpenAPM
Err_OpenAPM:
GoTo Exit_OpenAPM
Exit_OpenAPM:
If (0 <> hDC) Then
ReleaseDC 0, hDC
End If
End Function
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
convertir un WMF (aldus placeable Metafile) en WMF (Window Metafile) [ par philippeb ]
Bonjour !Je cherche une façon de convertir un WMF (aldus Metafile) en WMF (Window Metafile) en vb. J'ai trouver une façon en C mais je me suis pas vra
Dessin en WMF ou EMF [ par Buz ]
Bonjour,Je souhaite sauvegarder les dessins vectoriels que j'effectue à l'écran dans un fichier dessin WMF ou EMF, de manière à les réimporter dans Wo
convertir une image .emf en .jpg [ par dimitriour ]
bonjour,je cherche un exécutable pour convertir une image .emf en .jpg avec la possibilité de choisir le ratio de compression pour ne pas trop dégrade
convertir le contenu d'un textbox en entier [ par beet2che ]
bonjourest ce que l'instruction me permet de convertir le contenu du textbox en entier :Dim nserie As<font size="2
convertir vb 6 vers vb 2008 [ par informatixa ]
Bonjour j'aimerais convertir ces code vb6Open file_lag$ For Binary As #Numf Get #Numf, 4, lo& Get #Numf, , t% Get #Numf, , ve
Problème de conversion [ par jabaka ]
Bonjour j'ai un petit problème avec un script que j'essai de convertir en visual basic je sais que le problème est surement ridicule mais je me lance.
convertir a une application MS Access a une application de VB.net [ par fouad11 ]
j ai fais une application avec MS Access est je veux la convertir a une applicat
convertir une date en un entier [ par kryshnar ]
bonjour, je cherche a convertir une date en entier savant que pour le "30/12/1899" correspond la valeur "0"Merci de votre aide.
convertir pourcentage / degré sous excel [ par dama78 ]
Je cherche la formule pour convertir une pente de toit exprimée en pourcentage en degré ou vis et versa.Merci de votre aide
PROJET URGENT: Convertir un pdf vers format lisible en vbscript [ par neocam ]
Bonjour, Pour expliquer simplement je décris mon but rechercher... Je reçois un pdf, a l'intérieur de se dernier la première ligne correspond a une
|
Derniers Blogs
MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril SHAREPOINT 15 TECHNICAL PREVIEW MANAGED OBJECT MODEL SOFTWARE DEVELOPMENT KITSHAREPOINT 15 TECHNICAL PREVIEW MANAGED OBJECT MODEL SOFTWARE DEVELOPMENT KIT par Matthew
http://www.microsoft.com/download/en/details.aspx?id=28768&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+MicrosoftDownloadCenter+(Microsoft+Download+Center) ...
Cliquez pour lire la suite de l'article par Matthew
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|